加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

uboot 相关

发布时间:2020-12-15 18:48:44 所属栏目:百科 来源:网络整理
导读:bootloader:初始化硬件 加载OS 要初始化的硬件: CLOCK (24MHz) 内存 Nand Flash 1 Device= 2048 Block 1 Block = 64 Pages 1 Page ?= 2K + 64 UART (66MHz) 要关闭的硬件: Watch-Dog Interrupt ? bootloader过程 硬件: 1) 关闭干扰芯片启动的硬件 Watch-




bootloader:初始化硬件 & 加载OS


要初始化的硬件:
CLOCK (24MHz)
内存
Nand Flash
1 Device= 2048 Block
1 Block = 64 Pages
1 Page ?= 2K + 64
UART (66MHz)
要关闭的硬件:
Watch-Dog
Interrupt
?
bootloader过程
硬件:
1) 关闭干扰芯片启动的硬件
Watch-Dog
Interrupt
2) 时钟初始化
3) 内存SDRAM/DDRAM初始化
4) Nand Flash初始化
注意:#1 2) 和 3)不能颠倒顺序?
? ? #2 调试手段:LED、BEEP、UART


从Nand Flash启动:
? ? Nand Flash中?
Bootloader
Linux
rootfs
? #1 iROM 先把 Nand Flash 中的 Bootloader的前16K(足够初始化硬件) 复制到210的iRAM(96K)中,初始化硬件
#2 待 DDRAM 初始化完成后,把 Nand Flash 中全部的Bloader 复制到DDRAM中
#3 核再到 DDRAM 中,从刚才执行到的地方加载执行


软件:
1) Bootloader 自拷贝到 DRAM 中 (防止iRAM的空间不够用)
2) 程序流切换到DRAM (CPU从iRAM中执行——>从DRAM中执行)
3) 用户选择进入模式:加载OS or Shell








1) 彻底删除:make distclean
2) make ARCH=arm CROSS_COMPLIE=arm-linux- all tiny210_config?
3) ?make ARCH=arm CROSS_COMPLIE=arm-linux- all spl (库文件的绝对路径)


如何往板子上烧写:
方法1) 外部烧写器直接烧 较贵
方法2) #1 先将u-boot download到板子的内存中,
? ? ? ?#2 再用nand命令将u-boot烧写到板子上




方法2)实现
@将tiny210-uboot.bin烧写到SD卡中
#1 在210的目录下,找到sdb,表示识别读卡器
? sudo dd iflag=dsync oflag=dsync if=tiny210-uboot.bin of=/dev/sdb seek=1


dd: 复制
iflag:输入文件 ?dsync:同步
oflag:输出文件
if:要复制的文件
seek:要烧到的块号 (从1开始,不允许从0开始)


@@将 SD 卡中的 tiny210-uboot.bin 烧写到 Nand Flash
#2 在kermit中loadb,send tiny210-uboot.bin
#3 nand erase.chip
#4 nand write 0x21000000 offset size (offset:0 size:send过去的tiny210-uboot.bin)
#5 关机,从Nand Flash上启动,看到

1.进入uboot,执行 ./MAKEALL -a arm -c arm920t -s s3c24x0 ?可以找出和你要进行移植板子芯片相近的平台。

2.查看boards.cfg文件,里面定义了u-boot当前已经支持的板子,要想移植新板子的话需在这里面添加新版子的配置信息。 如:复制smdk2410这行的配置,然后在/include/configs/下拷贝smdk2410.h为akae2440.h,此时在u-boot目录下执行make O=../ubootbin akae2440_config ?然后make O=../ubootbin 编译时由于找不到/board/samsung/akae2440目录会出错,拷贝smdk410目录到akae2440目录,并且修改里面的smdk2410.c为akae2440.c,修改/board/samsung/akae2440/Makefile中smdk2410.o改为akae2440.o。 此时应该可以make 编译生成u-boot.bin。下一步再从具体的文件进行修改。 移植/arch/arm/cpu/arm920t/start.s文件,CONFIG_SKIP_LOWLEVEL_INIT定义是否把内存初始化分bank这件事编译到uboot中运行,如果uboot从ram中执行,则不必编译进去,如从nand里启动的话,必须做内存的初始化和cache及mmu的初始化操作。 在call_board_init_f函数中,设置SP,GENERATED_GBL_DATA_SIZE 此变量在/lib/asm-offset.c中定义,计算出栈的最佳大小。 board_init_f函数在/arch/arm/lib/board.c中定义,其中用到两个非常重要的结构体,bd_t在/arch/arm/include/asm/u-boot.h中定义,gd_t在/arch/arm/include/asm/global_data.h中定义。 main_loop在common/main.c中定义。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读