
uboot
floatinglong
这个作者很懒,什么都没留下…
展开
-
u-boot-2012.04.01移植(十二)裁剪u-boot并制作补丁
一、裁剪u-boot移植到现在,uboot的基本功能已经都添加上了,但有很多功能不需要,造成了u-boot程序太大,对此可以通过修改include/configs/smdk2440.h,取消定义不需要的宏,对u-boot进行适当裁剪usb相关宏:#if 0#define CONFIG_USB_OHCI#define CONFIG_USB_KEYBOARD#define C...原创 2020-04-03 22:40:58 · 210 阅读 · 0 评论 -
u-boot-2012.04.01移植(十一)提供yaffs文件系统烧写支持
测试u-boot是否jffs2文件系统的烧写烧写命令如下:tftp 30000000 fs_mini_mdev.jffs2nand erase.part rootfsnand write.jffs2 30000000 0x00260000 $filesize30000000:文件系统下载的目标地址0x00260000:文件系统应处于的flash地址$filesize:文件...原创 2020-04-03 22:40:53 · 242 阅读 · 0 评论 -
u-boot-2012.04.01移植(十)设置默认环境变量及实现环境变量的保存
启动时有如下提示信息,告知使用默认环境变量,我们可以在程序中自己设置默认环境变量*** Warning - bad CRC, using default environment搜索using default environment定位到common/env_common.c:175:grep “using default environment” * -nR函数开头出现环境变量...原创 2020-04-02 16:21:06 · 342 阅读 · 0 评论 -
u-boot-2012.04.01移植(九)提供dm9000网卡支持
从u-boot打印信息可以看到,使用网卡是cs8900,但开发板上集成的是dm000,需要修改代码以支持dm9000(使用内核自带dm9000驱动)1、修改配置更换网卡cs8900的源文件放在drivers/net中找到宏CONFIG_CS8900cat drivers/net/Makefile | grep cs8900为了使用网卡cs8900,需要定义宏CONFIG_...原创 2020-04-02 14:02:14 · 156 阅读 · 0 评论 -
u-boot-2012.04.01移植(八)提供nand flash支持
上一节修改代码后,提供了nor flash支持,但从nand flash启动,发现仍然会出现错误,故目前还不支持nand flash继续分析arch/arm/lib/board.c,可知当系统从nand flash启动,nor flash不可见,flash_size<=0时,程序进入死循环hang();修改代码:取消死循环// puts(failed);// h...原创 2020-04-02 13:46:28 · 131 阅读 · 0 评论 -
u-boot-2012.04.01移植(七)提供nor flash支持
无论系统从NOR启动还是从NAND启动,都会打印相同的错误信息Flash:*** failed ***### ERROR ### Please RESET the board正常的打印信息应该是Flash: 2M2M表示Flash大小显然这里Flash识别出错通过下面命令定位错误在arch/arm/lib/board.c:506:grep "Flash...原创 2020-04-02 13:38:23 · 400 阅读 · 0 评论 -
u-boot-2012.04.01移植(六)提供nand flash启动支持
重新编译烧写,串口输出错误信息:Flash:*** failed ***### ERROR ### Please RESET the board这个错误下一节再解决,这一节先为u-boot提供nand flash启动的支持前面分析uboot时提到链接时加上-pie选项会生成位置无关码,将变量、函数的地址保存起来,以便于在uboot重定位代码时使用,这样虽然可以不指定程序的链接...原创 2020-04-02 13:22:47 · 384 阅读 · 0 评论 -
u-boot-2012.04.01移植(五)修改串口初始化代码
重新编译烧写u-boot试验,发现串口输出乱码,可能是串口波特率设置不正确分析代码发现,串口初始化在初始化序列的中serial_init,这个函数调用drivers/serial/serial_s3c24x0.c中的serial_init_dev,最后在_serial_setbrg中设置波特率 reg = get_PCLK() / (16 * gd->baudrate) - ...原创 2020-04-02 13:04:50 · 258 阅读 · 0 评论 -
u-boot-2012.04.01移植(四)修改CPU时钟及分频系数
编译烧写u-boot发现,串口没有输出信息分析start.S1、设置分频系数1:2:42、然后在cpu_init_crit中调用lowlevel_init,按照60MHz 的HCLK来设置内存控制器3、随后设置栈,调用C函数board_init_f,在board_early_init_f中设置时钟这样的先后顺序是有问题的,因为设置内存控制器时CPU时钟是12MHz,HCL...原创 2020-04-02 13:00:22 · 481 阅读 · 0 评论 -
u-boot-2012.04.01移植(三)新建单板信息
所用开发板是JZ2440,与smdk2410相似,只需要拷贝smdk2410,并且稍加修改即可在u-boot顶层目录输入以下命令cp board/samsung/smdk2410 board/samsung/smdk2440 -rfcp include/configs/smdk2410.h include/configs/smdk2440.hvi boards.cfg添加一行...原创 2020-04-02 12:52:26 · 126 阅读 · 0 评论 -
u-boot-2012.04.01移植(二)安装合适的交叉编译工具链
3.4.5版本的工具链不足以支持编译u-boot-2012.04.01(编译时会出现段错误),安装4.3.2版本的工具链:mkdir tmpsudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /$PATH 我输入命令后显示/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/u...原创 2020-04-02 12:44:33 · 253 阅读 · 0 评论 -
u-boot-2012.04.01移植(一)简单分析第一阶段
与u-boot-1.1.6类似,分析可以得到链接命令的一部分如下:arm-linux-ld -pie -T u-boot.lds -Bstatic -Ttext 0x0 $UNDEF_SYM arch/arm/cpu/arm920t/start.o从链接命令可以知道:1、链接脚本:u-boot.lds2、第一个链接的文件:arch/arm/cpu/arm920t/start.S...原创 2020-04-02 12:42:22 · 238 阅读 · 0 评论 -
u-boot-1.1.6分析(五)启动流程之第二阶段
分析u-boot第二阶段(u-boot-1.1.6/lib_arm/board.c的start_armboot函数):1、初始化堆空间 gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t)); __asm__ __volatile__("": : :"memory"); memset ((void*)gd, 0, si...原创 2020-03-27 16:12:52 · 411 阅读 · 0 评论 -
u-boot-1.1.6分析(六)run_command
这一节的主要内容一、分析run_command二、自己写一个u-boot命令在u-boot启动等待超时的过程中按下空格键,u-boot会进入菜单模式(用于调试)run_command主要作用是在菜单模式中读取用户输入的字符串,根据字符串从表中提取参数、找到相应命令结构体,并调用命令结构体的功能函数,启动内核也是通过这个函数来进行的分析run-command:1、...原创 2020-03-27 16:15:15 · 586 阅读 · 0 评论 -
u-boot-1.1.6分析(四)启动流程之第一阶段
从链接脚本可以知道,上电运行第一个文件是u-boot-1.1.6/cpu/arm920t/start.Sstart.S完成的是u-boot启动的第一阶段,主要是完成一些硬件初始化并且转入u-boot第二阶段总的来说有这么九个内容:1、设置为SVC32模式_start: b reset /*跳转到reset*/……reset: mrs r0,cpsr bic...原创 2020-03-27 15:03:33 · 235 阅读 · 0 评论 -
u-boot-1.1.6分析(二)编译链接过程
分析顶层Makefile:117行包含了配置过程生成的config.mk文件:include $(OBJTREE)/include/config.mk选择对应的交叉编译工具链ifndef CROSS_COMPILE ifeq ($(HOSTARCH),ppc)CROSS_COMPILE =elseifeq ($(ARCH),ppc)CROSS_COMPILE = po...原创 2020-03-27 08:47:45 · 280 阅读 · 0 评论 -
u-boot-1.1.6分析(一)配置过程
在arm板上电时,为了运行操作linux系统,需要先初始化工作,如初始化各种硬件、设置栈指针、加载操作系统等,完成这些任务的程序就是bootloader,它是上电运行的第一段程序。Bootloader种类众多,在arm上用得较多的有u-boot和vivi不同板子有不同的硬件配置,bootloader一般也不会相同,u-boot为了支持众多的CPU,为每个支持的CPU都编写了特定的文件(位于根目...原创 2020-03-27 08:33:12 · 462 阅读 · 0 评论