(2)初始化flash设备 。
(3)初始化系统内存分配函数 。
(4)如果目标系统拥有nand设备 , 则初始化nand设备 。
(5)如果目标系统有显示设备 , 则初始化该类设备 。
(6)初始化相关网络设备 , 填写ip,c地址等 。
(7)进入命令循环(即整个boot的工作循环) , 接受用户从串口输入的命令 , 然后进行相应的工作 。
07 基于cortex-a8的s5pc100bootloader启动过程分析
s5pc100支持两种启动方式 , 分别为USB启动方式和NandFlash启动方式:
1. S5PC100 USB启动过程
[1] A8 reset, 执行iROM中的程序
[2] iROM中的程序根据S5PC100的配置管脚(SW1开关4 , 拨到4对面) , 判断从哪里启动(USB)
[3] iROM中的程序会初始化USB , 然后等待PC机下载程序
[4] 利用DNW程序 , 从PC机下载SDRAM的初始化程序到iRAM中运行 , 初始化SDRAM
[5] SDRAM初始化完毕 , iROM中的程序继续接管A8, 然后等待PC下载程序(BootLoader)
[6] PC利用DNW下载BootLoader到SDRAM
[7] 在SDRAM中运行BootLoader
2. S5PC100 Nandflash启动过程
[1] A8 reset, 执行IROM中的程序
[2] iROM中的程序根据S5PC100的配置管脚(SW1开关4 , 拨到靠4那边) , 判断从哪里启动(Nandflash)
[3] iROM中的程序驱动Nandflash
[4] iROM中的程序会拷贝Nandflash前16k到iRAM
[5] 前16k的程序(BootLoader前半部分)初始化SDRAM , 然后拷贝完整的BootLoader到SDRAM并运行
[6] BootLoader拷贝内核到SDRAM , 并运行它
[7] 内核运行起来后 , 挂载rootfs , 并且运行系统初始化脚本
08 u-boot移植(基于cortex_a8的s5pc100为例)
1.建立自己的平台
(1).下载源码包2010.03版本 , 比较稳定
(2).解压后添加我们自己的平台信息 , 以smdkc100为参考版 , 移植自己s5pc100的开发板
(3).修改相应目录的文件名 , 和相应目录的Makefile , 指定交叉工具链 。
(4).编译
(5).针对我们的平台进行相应的移植 , 主要包括修改SDRAM的运行地址 , 从0x20000000
(6).“开关”相应的宏定义
(7).添加Nand和网卡的驱动代码
(8).优化go命令
(9).重新编译 make distclean(彻底删除中间文件和配置文件) make s5pc100_config(配置我们的开发板) make(编译出我们的u-boot.bin镜像文件)
(10).设置环境变量 , 即启动参数 , 把编译好的u-boot下载到内存中运行 , 过程如下:
1. 配置开发板网络
ip地址配置:
$setenv ipaddr 192.168.0.6 配置ip地址到内存的环境变量
$saveenv 保存环境变量的值到nandflash的参数区
网络测试:
在开发开发板上ping虚拟机:
$ ping 192.168.0.157(虚拟机的ip地址)
如果网络测试失败,从下面几个方面检查网络:
1. 网线连接好
2. 开发板和虚拟机的ip地址是否配置在同一个网段
3. 虚拟机网络一定要采用桥接(VM--Setting--option)
4. 连接开发板时 , 虚拟机需要设置成 静态ip地址
2. 在开发板上 , 配置tftp服务器(虚拟机)的ip地址
$setenv serverip 192.168.0.157(虚拟机的ip地址)
$saveenv
3. 拷贝u-boot.bin到/tftpboot(虚拟机上的目录)
4. 通过tftp下载u-boot.bin到开发板内存
$ tftp 20008000(内存地址即可) u-boot.bin(要下载的文件名)
如果上面的命令无法正常下载:
1. serverip配置是否正确
2. tftp服务启动失败 , 重启tftp服务
#sudo service tftpd-hpa restart
5. 烧写u-boot.bin到nandflash的0地址
$nand erase 0(起始地址) 40000(大小) 擦出nandflash 0 - 256k的区域
$nand write 20008000((缓存u-boot.bin的内存地址) 0(nandflash上u-boot的位置) 40000(烧写大小)
6. 切换开发板的启动方式到nandflash
1. 关闭开发板
2. 把SW1的开关4拨到4的那边
3. 启动开发板 , 它就从nandflash启动
怎么学习linux学习Linux步骤:
1、先了解了解基础吧 , 找一本薄一点的 , 浅一点的书 , 了解一下什么是linux 。有个基本了解即可 。不建议马上看《鸟哥的Linux私房菜》 , 这本书很不错 , 如果你了解linux基础之后再看 , 对你可以说是不受益匪浅都不行 。没基础看《鸟哥的Linux私房菜》比较痛苦 , 内容很多 。
2、了解之后 , 在自己电脑上弄个虚拟机 , 装上linux系统(redhat或ubuntu都行) 。专攻《鸟哥的Linux私房菜》 。当你把这本书攻下来时 , 才知道原来命令行并不可怕 , 自己打着打着就很长啦 。
秒懂生活扩展阅读
- 图书馆学和档案学很热门吗
- 莫比斯环和莫比乌斯环 莫比
- 帕斯卡定律是什么和什么的基础 帕斯卡定律
- 炫杂是什么意思
- 吃香蕉和牛奶一起吃有什么反应
- 老料是什么意思 和田玉
- 川剧变脸的由来和历史
- 什么是物质和能量
- 牛百叶怎么处理才能嫩和脆
- 河内|好消息!关乎中国和越南!|中国自驾地理