Bootloader and Uboot compiled, c…
来源:互联网 发布:js导出csv 编辑:程序博客网 时间:2024/05/17 23:45
一个嵌入式系统从软件角度来看分为三个层次:
- 引导加载程序:包括固化在固件(firmware)中的boot程序(可选)和Bootloader两大部分.
- Linux内核:特定的嵌入式平台的定制内核.
- 文件系统:包括了系统命令和应用程序.
一个同时装有Bootloader内核的启动参数,内核映像和根文件系统映像的固态存储设备:
Bootloader:操作系统运行之前的一段小程序.
移植:
- 不同的CPU体系结构都有不同的BOOTLOADER.
- 即使基于同一种CPU而构建的,但如果它们的硬件资源或配置不一样的,也不可取.(板级配置不同)
流程:Bootloader的启动可分为单阶段和多阶段.(大多采用两阶段)
两阶段:stage1:完成初始化硬件.(CPU,寄存器 and soon)
Uboot:一种bootlader.
- 支持多种嵌入式CPU.(MIPS,X86,ARM,XScale)
- 支持多种体统.(Linux,Vxworks,QNX)
目录结构:Board:和开发板有关的文件.
Uboot编译:
- 执行:makesmdk2410_config
(例子) - 进行编译生成u-boot.bin:makeCROSS_COMPILE=arm-linux-...
(arm-linux-....:路径)
常用命令:(Uboot提供丰富的命令集,不同单板支持不一样)
1.help:可用于查看当前单板所支持命令.
2.printenv:查看环境变量.
3.setenv:添加,修改,删除环境变量.
4.saveenv:保存环境变量.
文件下载:tftp,串口下载.
下载例子:
tftp下载:
串口下载:
内存操作:
5.md:显示内存区的内容.
6.mm:修改内存,地址自动递增.
(如果想结束输入,则输入空格,然后回车)
7.flinfo:查看flash扇区信息.
8.protect:Flash写保护.
9.erase:擦除flash扇区.
(使用cp命令想Nor型flash写入数据之前必须先使用erase命令擦出flash,要为norflash按字节写入时,无法写入1,所以必须通过擦出来写入1)
例子:erase
10.数据拷贝.
cp[ .b , .w , .l]
例子:cp.b
将内存地址0x31000000处的数据(长度为0xd0000)拷贝到地址0x50000处.
执行程序:
11.go:执行内存中的二进制代码.
用法:go
12.bootm:执行内存中的二进制代码.
用法:bootm[addr[arg...]]
区别:
开发板信息:
13.bdinfo:显示开发板信息.(内存地址和大小,时钟频率,MAC地址 and so on)
自动启动:(小技巧)
设置自动启动:setenv bootcmd tftp31000000 uImage \; bootm 31000000
U-boot
板级设备的配置文件位于:include/configs/<board_name>.h
(<board_name>用相应的BOARD定义代替) 例子:smdk2410.h
移植的方法:分析U-boot已经支持的开发板,选择出硬件配置最接近的开发板.
步骤:
1.在顶层Makefile的开发板添加新的配置选项.
smdk2410_config:
参考上面两行:添加:
mini2440_config:
arm:CPU架构.
arm920t :CPU类型,(对应cpu/arm920t目录)
mini2440:开发板型号,(对应board/mini2440目录)
NULL :开发者.
s3c24x0:片上系统.
2.在board目录创建一个属于新开发板的目录.
mkdir -pboard/mini2440
cp -rfboard/smdk2410/*
3.未开发版添加新的配置文件,然后在修改(重点,主要)
cp include/configs/smdk2410.h
4.配置开发板.
makemini2440_config
5.编译U-Boot
makeCROSS_COMPILE=arm-linux-....
6.烧写U-Boot.
- Bootloader and Uboot compiled, c…
- 转载:C, Erlang, Java and Go Web…
- PROCESS J000 And …
- Why ASMLIB and why not? <转载…
- How to Disable and Turn Off UAC …
- Simulate and use real GPS in WM …
- How do I get default date and ti…
- HDOJ 1028 Ignatius and the Pri…
- Pro*C OCI …
- IOS Objective c 同步 异步链接 …
- GSM900 and GSM1800 ARFCN Frequen…
- Introduction: Using diff and pat…
- Data References and Anonymous St…
- [Flex] Hierarchical and grouped …
- Thinkpad Rescue and Recovery 使…
-  
- uboot start_armboot 和…
- 集线器 交换机 路由器 网桥 …
- Linux:Qt的编译和安装配置 (本…
- Linux:proc文件系统
- 【LintCode】查找斐波那契数列中的N个数
- Linux:内核进程 (脑里面必有…
- Linux内存管理
- Bootloader and Uboot compiled, c…
- Linux:网络编程 (下)
- Linux:网络编程 (上)
- Linux: 进程间通信
- Linux : 线程(thread)
- Linux的一些头文件
- STL: map类的用法介绍1
- 图论: 匈牙利算法 Edmonds
- 图论: spfa == Shortest Path Fast…