linux之u_boot移植
公板SMDK2410(S3C2410,不支持NAND FLASH)----à
蓝板SBC2410(S3C2410,添加了对NANDFLASH支持)---à
MINI2440(S3C2440,针对S3C2410与S3C2440的差异进行更改)
一、准备工作:
1、 建立工作目录
mkdir /root/build_uboot
cd /root/build_uboot
2、 把下载的源码拷贝到该目录,解压
# tar -zxvf u-boot-201003.tar.gz
二、修改文件
1、修改顶层 Makefile
在sbc2410x_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920tsbc2410x NULL s3c24x0
后添加:
mini2440_config: unconfig
@$(MKCONFIG) $(@:_config=) armarm920t mini2440 NULL s3c24x0 (注意:如果写作者名,则下面是board/作者名/mini2440)
2、(1)在/board子目录中建立自己的开发板board/mini2440目录
cp -r board/sbc2410x board/mini2440
(2) 将sbc2410.c更名为mini2440.c
(3). /mini2440/Makefile
COBJS :=nand_read.o sbc2410.o 改为 flash.o COBJS := nand_read.o mini2440.o flash.o
(4)在./mini2440/mini2440.c 中,把所有SBC2410X替换为 MINI2440
3、/include/configs/
(1)把sbc2410x.h复制一份为mini2440.h
(2)把下面:
#define CONFIG_S3C2410 1 /* specifically a SAMSUNG S3C2410 SoC */
#define CONFIG_SBC2410X 1 /* on a friendly-arm SBC-2410X Board */
#define CONFIG_SBC2410X_LED 1
#define CONFIG_SYS_PROMPT "[u-boot@SBC2410X]# " /* Monitor Command Prompt */
改为:
#define CONFIG_S3C2440 1 /* specifically a SAMSUNG S3C2410 SoC */
#define CONFIG_MINI2440 1 /* on a friendly-arm SBC-2410X Board */
#define CONFIG_MINI2440_LED 1
#define CONFIG_SYS_PROMPT "[u-boot@MINI2440]# " /* Monitor Command Prompt */
4、对start.s
(1) #if defined(CONFIG_SBC2410X_LED)
改为:#if defined(CONFIG_MINI2440_LED)
(2)下面针对2410与2440的不同作修改。找到S3C2410的宏开关“CONFIG_SBC2410X_LED”,有3个,逐个对其内容修改:
((1)) # ifdefined(CONFIG_S3C2410)
ldr r1,=0x7ff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
复制一份,并修改为:
#if defined(CONFIG_S3C2440)
ldr r1, =0x7fff
ldr r0, =INTSUBMSK
str r1, [r0]
#endif
((2)) #ifdefined(CONFIG_S3C2410)
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #0xc0000000
mcr p15, 0, r1, c1, c0, 0 /*write ctrl register tekkaman*/
mov r1, #CLK_CTL_BASE /* tekkaman*/
mov r2, #MDIV_200
add r2, r2, #PSDIV_200
str r2, [r1, #0x04]
#endif
复制一份,并修改为:
#if defined(CONFIG_S3C2440)
/*FCLK:HCLK:PCLK = 1:4:8 */
ldr r0, =CLKDIVN
mov r1, #5
str r1, [r0]
mrc p15,0, r1, c1, c0, 0
orr r1, r1, #0xc0000000
mcr p15, 0, r1, c1, c0, 0
mov r1, #CLK_CTL_BASE
mov r2, #MDIV_405
add r2, r2, #PSDIV_405
str r2, [r1, #0x04] /* MPLLCON */
#endif
((3)) 把下面代码中宏CONFIG_S3C2410改为CONFIG_S3C2440
#ifdef CONFIG_S3C2410
/* Offset */
#define oNFCONF 0x00
#define oNFCONT 0x04
#define oNFCMD 0x08
#define oNFSTAT 0x20
。。。
5、/cpu/arm920t/u-boot.lds
把board/sbc2410x/lowlevel_init.o (.text)
board/sbc2410x/nand_read.o (.text)
改为: board/mini2440/lowlevel_init.o (.text)
board/mini2440/nand_read.o (.text)
6、/lib_arm/board.c
3个地方出现CONFIG_SBC2410X_LED,改为:CONFIG_MINI2440_LED
三、 编译源代码
#cd u-boot-2010.03
#make distclean (清除源码树)
把编译器arm-linux-gcc-4.3.2.tgz放到/usr/local/arm/并解压。并确保解压后得到/use/local/arm/4.3.2目录。
#export PATH=/usr/local/arm/4.3.2/bin:$PATH (也可以写进~/.bashrc 或者是/etc/profile文件中)
#make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-mini2440_config 配置
#make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-all 编译
四、 烧写FLASH
最终生成的u-boot.bin可以通过supervivi菜单项里的"[a] Absolute User Application"选项 + DNW工具下载到NAND Flash中。
#printenv
#setenv serverip192.169.41.203----tftp服务器的IP地址---PC WINDOWS的IP
#setenv ipaddr192.169.41.55
#saveenv
#ping 192.169.41.203
linux之u_boot移植相关推荐
- 【转】将 Linux 应用程序移植到 64 位系统上
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
- 利用Linux的强大移植性和兼容性将操作系统轻松安装到硬盘
Linux的强大移植性和兼容性将操作系统轻松安装到硬盘先前在http://dgd2010.blog.51cto.com/1539422/392310写过一篇文章,<创新性试验:我的第一次实现Li ...
- Linux学习笔记---移植官方linux步骤(二)
目录 修改网络驱动 修改 LAN8720 的复位 以及网络时钟 引脚驱动 修改fec1和fec2节点pinctrl-0属性 修改LAN8720A的PHY地址 修改 fec_main.c 文件 配置 L ...
- Linux学习笔记---移植官方linux步骤(一)
使用的开发板是正点原子IMX6U-MINI EMMC512M的开发板,这个板子也是移植的NXP官方linux,所以这里就直接从NXP官方的linux移植. 这里所说的移植,其实不是自己编写驱动文件等 ...
- Linux学习笔记---移植官方uboot步骤(二)
在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...
- Linux学习笔记---移植官方uboot步骤(一)
目录 编写shell脚本 修改MakeFile文件 重命名shell脚本 添加默认配置文件 修改默认配置文件 准备需要的板级文件夹 重命名.C文件 修改Makefile 修改imximage.cfg配 ...
- zybo上运行linux,Zybo开发板linux作业系统移植
文章主要介紹zybo board上linux作业系统移植过程.分别介绍了开发环境搭建.U-boot编译.linux内核编译.busybox制作等流程及注意事项.文章使用的开发板是zynq 7000系列 ...
- imx6ull移植Linux系统第二篇——Linux内核的移植
imx6ull移植Linux系统第二篇--Linux内核的移植 花了大概两周的时间,把Linux的移植认真学了一遍,期间踩了不少坑,花费了不少时间去解决各种奇奇怪怪的问题,最终完成了uboot.系统镜 ...
- 【Linux】嵌入式Linux系统的移植(上篇:交叉编译器、连接方式)
嵌入式Linux系统移植 嵌入式Linux系统移植是进行Linux驱动开发的基础,如果连Linux系统移植都完成不了,那就更不用说驱动开发了.因此,Linux系统移植至关重要. 嵌入式Linux系统的 ...
最新文章
- Mysql Cluster节点类型
- java属于高级语言_以下哪种语言属于高级语言________________。A、JavaB、C++C、VisualBa...
- windows server 2008 picture
- Sleepy Kaguya
- LINQ中ForEach方法的使用
- MariaDB通过命令行的方式导出指定数据库和还原指定数据库
- linux 动态库构造函数,Linux共享库全局构造函数的相互依赖性
- java泛型区间_JAVA 14(泛型)
- python qq 聊天记录词云制作
- 人体姿态估计:OpenPose、CPN
- java计算矩形_用Java实现计算矩形的面积与周长
- QML 全屏 输入法无法显示
- 加班申请 ----中间表--系统自动算出---可调休天数
- python 10进制转2进制
- TrustZone软硬件架构
- 如何防止数据篡改和数据库泄漏
- 计算机网络——最全基本概念与网络分层介绍
- [ STK ](九)改变 3D 视图的背景颜色,设置卫星轨道的颜色,导出 3D 视图
- python 搜索引擎 实验楼的源码_Python语言之简历有错别字被拒绝聘用?文档被领导说?Python实现永无错别字!...
- 火狐和selenium,以及geckodriver的版本匹配问题
热门文章
- linux shell编程 ppt,《LinuxSHELL编程》PPT课件.ppt
- dev和media和mnt的区别
- YYCache 源码解析(一):使用方法,架构与内存缓存的设计
- 读 YYCache 源码解析
- 航班信息的查询与检索Java,航班信息查询与检索
- Mybatis,#{}和${}取值符号
- 快捷指令获取url内容_iphone12相机水印快捷指令怎么添加-iphone12相机水印快捷指令添加教程...
- DIY一把属于自己的机械键盘(五)
- 冥想增加了大脑振荡活动的熵
- (17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程