2、添加命令

U-Boot中提供了丰富的命令,smdk2410板增加一些命令。我们为我们的开发板配置了一部分命令,找到下面的几行:
#define CONFIG_CMD_CACHE
#define CONFIG_CMD_DATE
#define CONFIG_CMD_ELF
在其下面添加下面几行:
#define CONFIG_CMD_REGINFO
#define CONFIG_CMD_NAND
#define CONFIG_CMD_PING
#define CONFIG_CMD_DLF
#define CONFIG_CMD_ENV
#define CONFIG_CMD_NET
这样就添加了一些我们需要的命令。
 
这样就添加了一些我们需要的命令。
3、修改环境变量
环境变量是U-Boot运行时或者传递给内核的重要参数,需要正确设置。找到下面的一行:
#define CONFIG_BOOTDELAY 3
/*#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,9600"
*/
/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 10.0.0.110
#define CONFIG_SERVERIP 10.0.0.1
/*#define CONFIG_BOOTFILE "elinos-lart" */
/*#define CONFIG_BOOTCOMMAND "tftp; bootm" */
#if defined(CONFIG_CMD_KGDB)
注意上面的#if defined(CONFIG_CMD_KGDB)处,需要做的修改都在这之前进行修改。修改后的代码如下:
#define CONFIG_BOOTDELAY 3
#define CONFIG_BOOTARGS "root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200"
#define CONFIG_ETHADDR 08:00:3e:26:0a:5b
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 10.88.221.118
#define CONFIG_SERVERIP 10.88.221.117
#define CONFIG_BOOTFILE "uImage"
#define CONFIG_BOOTCOMMAND "tftp; bootm"
#define CONFIG_CMDLINE_TAG 1
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG 1
#if defined(CONFIG_CMD_KGDB)

添加的环境变量在U-Boot启动时作为U-Boot的默认环境变量,如果不执行saveenv命令,则这些变量只存在于SDRAM中;执行saveenv命令后,这些便量会保存到Flash中,下次上电,在从Flash中把它读出来,作4、修改命令提示符为环境变量使用。

找到下面一行:
#define CFG_PROMPT "SMDK2410 # " /* Monitor Command Prompt */
修改为:
#define CFG_PROMPT "[UP-2410 #]"
这样,U-Boot的命令提示符就是[UP-2410 #]用的是经典。这样做只是为了使用的时候知道我们使2410开发板上Bootloader,当然不改的话,也没有什么影响。

5、修改默认下载地址

找到下面的一行:
#define CFG_LOAD_ADDR 0x33000000 /* default load address */
这个变量定义的是在使用串口或者网卡下载文件到SDRAM址,则下载到这个宏指定的默认地址。我们用下面的两行来替代:时,如果不指定下载地
#define CFG_LOAD_ADDR 0x30008000
#define CFG_TFTP_LOAD_ADDR 0x30008000

6、修改环境变量在Flash 中的存储地址

找到下面的两行:
#define CFG_ENV_IS_IN_FLASH 1
#define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */
上面的定义说明环境变量是存在Flash中。我们的板子上只有Nand Flash量只能存在,因此环境变Nand Flash中。因此,注释掉上面的两行,用下面的几行代替:
#define CFG_ENV_IS_IN_NAND 1
#define CFG_ENV_SIZE 0x4000
#define CFG_ENV_OFFSET (0x80000-0x4000)
表示环境变量存储在Nand Flash中,大小为16KB,起始地址是0.5M往下的16KB址处。这样的话, 地U-Boot占用的Flash地址是前0.5M,对U-Boot来说,已经足够了。到这里,配置文件的修改就完成了。
四、修改网卡驱动
前面提到,我们的开发板上是DM9000A网卡,不能直接只用U-Boot这动个,驱我动们的提实供现了代这码个。网公卡有的两驱个动文,件由:于修改的地方比较多,就不作详细解释了提,供直的接网给卡出驱dm9000x.c和dm9000x.h。这两个文件在我们的src目录中存放。把这两个拷贝到u-boot源代码目录下的drivers/net下,替换掉U-Boot驱动文件。
[root@localhost u-boot-1.3.2]# cp /mnt/hgfs/linux/dm9000x.* drivers/net/

五、编译U-Boot
首先运行如下命令配置U-Boot:
[root@vm-dev u-boot-1.3.2]# make up2410_config
Configuring for up2410 board...
[root@localhost u-boot-1.3.2]# vi Makefile
CROSS_COMPILE = arm-softfloat-linux-

然后运行make命令编译:
[root@vm-dev u-boot-1.3.2]# make
编译完成后,会在U-Boot的源代码目录下生成u-boot.bin文件。这个文件就是我们需要的二进制文件。

编译完成后,会在U-Boot的源代码目录下生成u-boot.bin文件。这个文件就是我们需要的二进制文件。
六、烧写U-Boot
将编译得到的u-boot.bin拷贝到XP的D盘下,将我们光盘中的sjf2410-s.exe贝到文件也拷D盘下。连接好开发板的电源、JTAG 下载线,打开发板的电源。在电脑桌面的左下角点击开始,找到运行:
版权所有
1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>D:
D:\>
这样就进入了D盘,运行如下命令进行烧写:
D:\>sjf2410-s.exe /f:u-boot.bin
这样就会启动烧写程序。在烧写程序中需要我们做一些选择,要分别输入三次0,然后才开始真正的烧写,烧写完毕后,输入2推出程序。如下面的内容:
七、测试U-Boot
现在U-Boot和主机之间的串口已、经网烧口写,到断开开发板发上板了的,可以启动开发板检测是否烧写好。连接好开发板JTAG下载线,启动开发板。如果烧写成功,会在串口终端上出现如下内容:
注意上面内容中红色的部分,主要是因为我们没有把环境变脸写入Flash令将环境变量写入。运行如下命Flash中:
[UP-2410 #]saveenv
[UP-2410 #]printenv
[UP-2410 #]ping 192.168.1.135
[UP-2410 #]help

转载于:https://blog.51cto.com/chenboqiang/484037

BootLoader引导程序制作及移植(二)相关推荐

  1. BootLoader引导程序制作及移植(一)

    U-Boot 实验指导书 一.获得U-Boot 源码 我们的光盘中提供了直接从U-Boot的官方网站下载的源代码,版本是1.3.2,放在src目录下.将u-boot-1.3.2.tar.bz2拷贝了工 ...

  2. linux根文件系统的移植 课程设计,定稿基基于ARM9嵌入式Linux引导程序研究与移植嵌入式综合实验报告完整版...

    <基<基于ARM9嵌入式Linux引导程序研究与移植>嵌入式综合实验报告.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)基基于ARM9嵌入式Linux引导程序研 ...

  3. grub2引导linux内核,一种基于grub2的linux系统启动bootloader的制作方法与流程

    技术领域 本发明涉及服务器应用技术领域,具体涉及一种基于grub2的linux系统启动bootloader的制作方法. 背景技术: 当前linux系统的内核版本已经升级至4.0以上,最新的linux系 ...

  4. cocos2dx 制作单机麻将(二)

    cocos2dx 制作单机麻将(二) 打乱麻将顺序2 前面解说了怎样打乱初始给定的麻将牌堆, 另一种是打乱随意给定的麻将牌堆 //混乱扑克2 void RandAppointCardData(BYTE ...

  5. ⭐️Python实用小工具之制作酷炫二维码(有界面、附源码)⭐️

    镇楼图 文章目录 写在前面 制作二维码 安装myqr库 myqr.run()参数详解 制作普通二维码 制作黑白背景二维码 制作彩色背景二维码 制作大边长二维码 制作动态二维码 解析二维码 tkinte ...

  6. 网址二维码:如何制作网页链接二维码?

    1994年,一家日本的公司发明了二维码,最开始是用来追踪旗下公司零部件的维修情况.在二维码上有不同的区域,标识不同的信息,比如对齐模式.定时模式.安静区域.版本信息.数据单元等. 现如今二维码和我们的 ...

  7. 离线语音远程遥控车控门制作教程(二)

    离线语音远程遥控车控门制作教(二) 序言 接 离线语音远程遥控车控门制作教程(一),本篇为自己动手画PCB,功能和一是一样. 功能: 1.遥控器端可以用按钮控制. 2.用离线语音模块语音控制. 3.车 ...

  8. 如何制作一寸、二寸、六寸照片。以后不用再去照相馆

    源地址:http://blog.renren.com/GetEntry 如何制作一寸.二寸.六寸照片.以后不用再去照相馆了!!!能者无畏兵 如何制作一寸.二寸.六寸照片.以后不用再去照相馆了!!!超级 ...

  9. 如何制作一寸、二寸、六寸证件照片

    如何制作一寸.二寸.六寸照片,希望看后大家再也不用为急着用的一寸照烦恼了,自己制作然后直接打印就行了! 首先要知道的数量关系: 6寸=10.2cm×15.2cm 1寸=2.5cm×3.5cm 2寸=3 ...

最新文章

  1. NTU课程 CE7454 回归与分类
  2. 联想笔记本进入pe_联想笔记本bios怎么设置U盘启动|legacy和uefi双引导模式启动
  3. 210. 课程表 II
  4. C++常用方法笔记资料
  5. python路3--tuple、str
  6. 自然数,实数,有理数,整数,分数,无理数
  7. 网站优化之Ajax优化及相关工具
  8. python网址太长_Python GUI-长链转短链
  9. telnet后为啥打开的时防火墙_《和平精英》停服时玩家打开国际服,淘汰1个敌人后收到1个提示!...
  10. 95-190-540-源码-window-清除器(Evictors)-简介
  11. redis相对于mysql有什么劣势
  12. 在el-table中使用el-popover,没法点击确定或取消来关闭添加 多个按钮
  13. 七大排序的 java 实现和理解
  14. Emulex LightPulse FC9002L光纤卡安装日志
  15. 2021年海河英才计划天津落户天津最详细过程
  16. 如何用随机森林算法,在深海养肥一群鱼
  17. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
  18. 研报实现——抓“妖股”就那么容易吗?
  19. Unity3D使用经验总结 优点篇
  20. 基于cocos2dx的横版动作游戏制作(二)

热门文章

  1. android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
  2. mvp架构 java_GitHub - AnthonyCoder/MvpForJava: 一个可直接快速引入的 Java 版本的模块化 MVP 框架...
  3. unity Android 剪贴板,Unity移动端的复制要这么写示例代码
  4. 安装启动gui卡住_为什么Windows 10升级安装卡住了,原因在这
  5. 计算机函数match,秒杀vlookup函数,Index+Match函数组合
  6. 绘画软件优动漫PAINT系统要求
  7. 大道至简第一章 读后感
  8. BC#29A:GTY's math problem(math) B:GTY's birthday gift(矩阵快速幂)
  9. 使用beanUtils操纵javabean
  10. Sharepoint学习笔记—ECMAScript对象模型系列-- 7、获取和修改List的Lookup字段