等腰三角形求边长公式:u-boot-2009.11 在 6410上的移植-it群
来源:百度文库 编辑:偶看新闻 时间:2024/05/21 21:06:59
参考smdk6400进行的移植。
u-boot-2009.11直接就支持 6410的nand flash启动。nand、DM9000A都是直接使用里面的驱动就可以了。感觉还是挺顺的。时间比较长了,感觉当时遇到的问题主要就是gcc优化的问题和栈的问题。
u-boot-2009.11 6410主要有两部分:u-boot和nand启动的代码。编译完成后的u-boot-nand.bin好像就是 nand_spl的u-boot-spl-16k.bin 和 u-boot的u-boot.bin直接cat就OK了。nand启动的代码在nand_spl文件夹里面。其实主要就是 start.s、lowlevel.s等几个初始化文件、nand的驱动 s3c64xx.c、nand_ecc.c和 nand启动的nand_boot.c。初始化文件和nand的驱动都是直接链接到u-boot中的相应文件。
出的几个问题都和这个有关系。
1、start.s 里面设置stack的代码如下:
stack_setup:
#ifdef CONFIG_MEMORY_UPPER_CODE
ldr sp, =(CONFIG_SYS_UBOOT_BASE + CONFIG_SYS_UBOOT_SIZE - 0xc)
#else
ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
sub r0, r0, #CONFIG_SYS_MALLOC_LEN /* malloc area */
sub r0, r0, #CONFIG_SYS_GBL_DATA_SIZE /* bdinfo */
sub sp, r0, #12 /* leave 3 words for abort-stack */#endif
我没有定义CONFIG_MEMORY_UPPER_CODE,结果压根跑不了!
仔细看了一下,问题是出在:
ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
在u-boot里面,_TEXT_BASE = $(RAM_TEXT),也就是0x57e0000。
但是在nand_spl里面TEXT_BASE=0!
最后我改成:
ldr r0, =(CONFIG_SYS_UBOOT_BASE)2、后来串口有输出了,但运行到nand初始化或者初始化环境变量的时候整个系统就挂了。
郁闷了好长时间。
最后用j-link连上以后发现,有的时候既然运行到一个全局变量的地址上去了!
开始怀疑编译器的问题。发现 u-boot 编译的时候使用了 -Os 的优化。然后就将此优化关掉(在根目录的config.mk中加的)。结果还是运行不了!
后来才发现,没有-Os的优化,u-boot-spl-16k.bin超过4K的了。没办法最后在 nand-spl的makefile又加上了 -Os的选项。
最终能跑了!我可不想去追究为啥了。 详细出处参考:http://www.itqun.net/content-detail/188808.html
U盘中拉病毒 virtue.boot.chan
boot.ini在哪?
boot.ini在哪里?
Boot order在哪里
如果将BOOT.INI文件移动到U盘,在启动时必须插入U盘,有哪些地方要进行修改,又如何修改?谢谢!!!
请问boot.ini在哪里
boot.ini文件在哪?
boot.ini文件在哪?
在哪找到BOOT.TXT.
boot.ini在什么地方啊
u-boot中关于字节对准的问题
关于u-boot中字节对准的问题
boot.ini文件在哪里可以找到?
请问boot.ini的具体位置在什么地方?
为什么我在运行里打不开boot.ini
我在win2000里,找不到boot.ini,,,
boot.ini一般放在哪?
如何在DOS下修改boot.ini
system.ini的[boot]字节在哪
在BOOT里找不到设置光盘启动项
BOOT在计算机里什么意思?
如何在boot.ini在中加入dos启动项
U盘在哪里?
!!!!!!!!!!!!!windows2000server的boot.ini文件在哪目录下啊!!!!!!!