uboot初步-01
步骤:
1、选择合适的uboot版本
2、uboot修改
3、交叉编译出bin文件
4、烧写到SD卡或flash中
uboot的版本选择
在uboot中IP内核称为CPU 内核外围的各种外设称为broad
可在S5PV210上参考使用的uboot版本:goni
中断和异常的区别:
中断可以被cpu忽略,但是异常必须被执行
异常的优先级高于中断。
异常的类型:
1、undefined_instruction 未定义指令
2、software_interrupt 软中断
3、prefetch_abort 预取值中止
4、data_abort 数据中止
5、irq 普通中断
6、fiq 快中断
uboot之SPL:
u-boot基本大小在200KB左右,而S5PV210的内部SRAM只有96KB,因此将u-boot做为两个镜像:u-boot.bin uboot_spl.bin。uboot_spl.bin(BL1)载入内部SRAM中运行(同时初始化外部SDRAM),然后将u-boot的大头u-boot.bin直接加载到外部SDRAM中,最后由内部SRAM跳转到外部SDRAM内存中u-boot.bin的首地址去运行。
PL0(Privilege mode 0) usr模式:处理器正常的程序执行状态
PL1 sys模式
superviser模式
IRQ模式
FIQ模式
Abort模式(数据访问终止模式)
PL2 Hyper模式
制作uboot烧写镜像:
1、编译文件:
make S5P_goni_config
make
2、提取前16K内容:
./mkv210 u-boot.bin u-boot.16k
3、拷贝PC终端文件至SD卡指定位置:
1 sudo dd iflag=dsync oflag=dsync if=u-boot.16k of=/dev/sdb seek=1 2 //iflag:input flag oflag:output flag 3 //if :input file(源文件) of:output file(目标文件) 4 //seek=1 :从第一个扇区开始写入
在此也可以建立批处理文件来执行上面指令:新建文件bornSD.sh
1 #!/bin/bash 2 3 ./mkv210 u-boot.bin u-boot.16k 4 sudo dd iflag=dsync oflag=dsync if=u-boot.16k of=/dev/sdb seek=1 5 sudo dd iflag=dsync oflag=dsync if=u-boot.bin of=/dev/sdb seek=49
之后修改文件模式为可执行:chmod a+x bornSD.sh。之后只需执行bornSD.sh即可执行上面三条指令。
Linux环境下复制一个文件的一部分内容值另一个文件的方法:(A--->B)
1、在源文件A的vim命令行下输入:”变量名行数yy“ 如”a3yy“
2、打开B文件 ”变量名p“ 如"ap"
反汇编查看文件(输出C源代码和反汇编出来的指令对照的格式) arm-linux-objdump -S 文件名
在管道中查看:arm-linux-objdump -S 文件名|less