U-Boot-2009-03移植笔记(第二阶段移植准备)

发布者:RainbowGarden最新更新时间:2024-09-04 来源: cnblogs关键字:U-Boot  移植  移植准备 手机看文章 扫描二维码
随时随地手机看文章

在U-Boot-2009-03移植笔记(从Nandflash启动二)中,我们移植好了Nandflash的读驱动,并且将U-boot从nandflash中搬运到了sdram,接下来的工作,就是沿着u-boot的执行主线,继续往下修改代码。


测试代码是否正确执行到第二阶段


U-BOOT的启动,分为两个阶段,第一个阶段是在cpu/arm920t/start.S中的汇编代码,主要工作是设置CPU工作模式、关看门狗、禁中断、初始化内存、代码搬运,初始化堆栈,清BSS段,然后跳转到start_armboot函数执行,这个start_armboot在lib_arm/board.c中,我们在这个start_armboot函数的一开始,点亮led1,led2,led3三盏灯。


1、在board/xinna2440下面增加一个led_op.c文件,内容如下:


 1 #define GPBCON  (*(volatile unsigned long *)0x56000010)

 2 #define GPBDAT  (*(volatile unsigned long *)0x56000014)

 3 

 4 int led_on(int index)

 5 {

 6     if(index == 1)

 7     {

 8         GPBCON = (1 << 10);

 9         GPBDAT = ~((1 << 5));

10     }

11     else if(index == 2)

12     {

13         GPBCON = (1 << 10) | (1 << 12);

14         GPBDAT = ~((1 << 5) | (1 << 6));

15     }

16     else if(index == 3)

17     {

18         GPBCON = (1 << 10) | (1 << 12) | (1 << 14);

19         GPBDAT = ~((1 << 5) | (1 << 6) | (1 << 7));

20     }

21     else 

22     {

23         GPBCON = (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);

24         GPBDAT = ~((1 << 5) | (1 << 6) | (1 << 7) | (1 << 8));

25     }

26     return 0;

27 }


2、修改board/xinna2440/Makefile增加对led_op.c的编译。


3、修改lib_arm/board.c,在start_armboot函数一开始死循环调用led_on(3)。


4、烧写,运行,发现三盏灯全亮。


找出移植点


我们基于smdk2410的bsp进行移植,那么只要找出s3c2410和s3c2440的不同点以及主板的不同点,然后针对这些不同点进行代码修改,即可完成移植。


S3C2410 vs S3C2440:


1、时钟不同


2、Nandflash控制器不同


3、中断控制器不同


4、主板GPIO链接不同


5、网卡芯片不同。


找出这些不同点,我们一步一步修改代码,直到U-boot正常运行即可。

关键字:U-Boot  移植  移植准备 引用地址:U-Boot-2009-03移植笔记(第二阶段移植准备)

上一篇:U-Boot-2009-03移植笔记(从Nandflash启动二)
下一篇:U-Boot-2009-03移植笔记(第二阶段:时钟!)

推荐阅读最新更新时间:2026-03-25 11:16

TQ2440 学习笔记—— 33、移植 Linux 内核【 准备
一、Linux 版本及特点 Linux 的内核版本号可从位于顶层目录下的 Makefile 中查找到。如 VERSION = 2 VERSION = 6 SUBLEVEL = 22 EXTRAVERSION = .6 这几行构成了版本号 2.6.22.6。其中 VERSION 及 VERSION 构成版本的主版本号。SUBLEVEL 是次版本号,EXTRAVERSION 是拓展版本号。Linux 内核版本分为测试版本及稳定版本。VERSION 的值是偶数的为稳定版本, VERSION 是奇数,则表示该版本有新内容加入,版本是不稳定的测试类型的。 二、Linux 移植准备 1、获取内核源码 登录 Linux 内核的官
[单片机]
TQ2440 学习笔记—— 33、<font color='red'>移植</font> Linux 内核【 <font color='red'>准备</font> 】
u-boot 移植 --->2、在u-boot新增SOC和板子
本次主要是要新增一个samsung的芯片到u-boot中,网上查阅资料发现s5pc1xx是与手上的S5PV210的友善的Tiny版子寄存器兼容的比较多,所以就准备以他为基础增加一个我的板子的支持到u-boot中。 step1 拷贝archarm目录下的mach-s5pc1xx目录修改名称为mach-s5pv210,注意这里的mach-xxx后面的xxx的命令是和Kconfig文件一会的修改相关的。 step2 在archarmKconfig 文件中增加新的芯片这里参考s5pc1xx的内容 。 。 。 config ARCH_S5PC1XX bool Samsung S5PC1XX select CPU_V7 sele
[单片机]
U-boot内核移植步骤
Linux 3.3.5系统移植 将arch/arm/mach-s3c6410/下的,mach-smdk6410.c cp为mach-my6410.c; 打开arch/arm/mach-s3c6410/下的Kconfig,仿照MACH_SMDK6410做一个菜单项: config MACH_MY6410 bool MY6410 select CPU_S3C6410 select SAMSUNG_DEV_ADC select S3C_DEV_HSMMC select S3C_DEV_HSMMC1 select S3C_DEV_I2C1 select SAMSUNG_DEV_IDE select
[单片机]
u-boot移植到s3c2440开发板(一)--建立单板
由于没有系统的学习shell,所以Makefile大多数看不懂,一个小小的细节,把我难住了几天。现在开始分享我的操作过程 本文所有linux下的操作是root用户,如果你使用普通用户,请在命令前加上 $ sudo xxxx 所有Linux命令都是加粗,需要加入的文本是斜体 /* *  Ubuntu 16.04 *  u-boot-2016.05.tar.bz2 *  arm-linux-gcc-4.4.3.tar.gz */ 准备工作 1.下载u-boot,我是用的u-boot-2016.05.tar.bz2,可以自己去官网下载 下载地址, ftp://ftp.denx.de/pub/u-boot/ 2.下载arm-linux-g
[单片机]
<font color='red'>u-boot</font><font color='red'>移植</font>到s3c2440开发板(一)--建立单板
u-boot移植总结(二)LED点灯调试 和 u-boot加载地址
(一)LED点灯调试 FL2440电路总共有4个LED0,LED1,LED2,LED3,分别接到板子GPB5,GPB6,GPB8,GPB10引脚。通过设置三个寄存器GPBCON(0x56000010),GPBDAT(0x56000014),GPBUP(0x56000018),控制GPB 引脚可控LED的亮灭。 控制LED亮灭有三步: 1,设置GPB5,GPB6,GPB8,GPB10为输出工作方式,即GPBCON = 01 GPBCON = 01,GPBCON = 01,GPBCON = 01 2,GPBUP置0000 0101 0110 0000 即GPB5,GPB6,GPB8,GPB10皆禁止使能上拉 3,设置GPBD
[单片机]
<font color='red'>u-boot</font><font color='red'>移植</font>总结(二)LED点灯调试 和 <font color='red'>u-boot</font>加载地址
u-boot移植总结(四)u-boot-2010.09框架分析
(一)本次移植是基于FL2440,板子的基本硬件: CPU 型号为S3C2440,基于ARM920T,指令集ARMV4,时钟主频400MHz SDRAM H57V2562GTR-75C 2片*32MB=64MB,挂载于nGCS6 (0x3000 0000) NANDFLASH 型号:K9F2G08U0B 大小:256MB Network Adapter (网卡) DM9000AEP 10/100M自适应,挂载于nGCS4 (0x2000 0000) LED 5个LED(LED0~3)I/O口指示灯,LED5电源指示灯,LED9核心板3.3V指示灯 L
[单片机]
<font color='red'>u-boot</font><font color='red'>移植</font>总结(四)u-boot-2010.09框架分析
U-Boot移植(9)u-boot主要的数据结构
u-boot的主要功能是用于引导OS的,但是本身也提供许多强大的功能,可以通过输入命令行来完成许多操作。所以它本身也是一个很完备的系统。u-boot的大部分操作都是围绕它自身的数据结构,这些数据结构是通用的,但是不同的板子初始化这些数据就不一样了。所以u-boot的通用代码是依赖于这些重要的数据结构的。这里说的数据结构其实就是一些全局变量。  1)gd 全局数据变量指针,它保存了u-boot运行需要的全局数据,类型定义:  typedef struct global_data { bd_t *bd; //board data pointor板子数据指针 unsigned long flags;  /
[单片机]
U-Boot移植(1)新建一个开发板的相应目录和文件
今天很高兴,终于把U-Boot移植成功,在做的同时,我把一些步骤以截图记下。。现在我来慢慢回顾下过程。。 1、从官网上下了个U-Boot-1.1.6,网址:http://sourceforge.net/projects/u-boot/。然后放到Ubuntu的/work/下,解压。 2、进入board目录,将smdk2410复制为100ask24x0,并将board/100ask24x0/smdk2410.c改名为100ask24x0.c。 3、将include/configs/smdk2410.h直接复制为100ask24x0.h 4、修改以下两个Makefile,先看顶层的Makefile,增加底部
[单片机]
<font color='red'>U-Boot</font><font color='red'>移植</font>(1)新建一个开发板的相应目录和文件
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved