
一个nand flash 一个 norflash
先用jlink下载Uboot到norflash
然后启动 用uboot更新uboot到 nandflash的方式 下载裸机程序
然后从nandflash启动
2.ADS用法 可以去网上查查 好多
3.(不使用ADS)建立裸机程序:必须自己实现几个东西
3.1初始化硬件(汇编):比如关闭看门狗啊 初始化栈指针(如果你要跑C的话) 之类
3.2MAKEFILE 中要制定连接地址 去_elf头
3.3实现你的C程序
比如简单的控制LED的裸机程序
crt0.S:
.text
.global _start
_start:
ldr r0, =0x53000000 @ WATCHDOG寄存器地址
mov r1, #0x0
str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启
ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
@ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
bl main@ 调用C程序中的main函数
halt_loop:
b halt_loop
在调用c函数前必须先设置好堆栈,如果代码不大,一般设置栈为 ldr sp, =8*1024 ,即内部sram的最大地址处,如果完成了外接sdram的初始化,可以设置成 ldr sp, =0x60000000.将你的#define宏定义和编译出错信息上传出来,我使用#define就没问题。
首先搞些裸机程序,前提是一直要看硬件手册,这很关键,即便再好的辅导视频,对板子的讲解也不会跳出datasheet。汇编也要有些了解,不一定要多么熟悉,但是基本的还是要有的,start.s文件在裸奔时还是必须的。其次,在搞熟裸机程序之后,先自己动手移植一下U-Boot和Linux内核,制作一下根文件系统,网上文档有很多,可以产生一些感性上的认识。U-Boot上边很多代码写得还是很经典的,在水平达到一定程度后可以考虑学习一下。
最后就是驱动学习和内核的学习了。
总之,视频是辅助,学习靠自己,万事开头难,但是不靠自己硬挺过去是不行的。祝你好运。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)