U-Boot-2009-03移植笔记(移植准备)

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

因为工作需要,需要在S3C2440板子上移植U-boot和Linux,虽然关于S3c2440移植的文章比较多,但是毕竟全面的不多,而且都是别人的,这次自己动手,以此系列记录全过程。


U-boot1.1.6中有支持smdk2410的代码,而2440和2410还是比较相近的,于是在2410的基础上来移植。


建立xinna2440代码

我们把自己移植的u-boot叫xinna2440-u-boot,首先要建立xinna2440代码


修改顶层Makefile


直接在vim中查找smdk2410_config,然后在下面增加xinna2440_config的定义


1 smdk2410_config    :    unconfig

2     @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

4 xinna2440_config    :    unconfig

5     @$(MKCONFIG) $(@:_config=) arm arm920t xinna2440 NULL s3c24x0


然后拷贝代码


cp  include/configs/smdk2410.h include/configs/s3c2440.h

cp board/samsung/smdk2410/ board/xinna2440 -r 


测试xinna2440代码


make xinna2440_config

Configuring for xinna2440 board...

make


只要你安装好了交叉编译链(这里推荐3.4.5,其他版本有可能在移植Nandflash驱动的时候出现链接错误),编译不应该出错,在根目录下会生成u-boot.bin文件。  


搞清楚要移植的内容

U-Boot分为两部分,第一部分是汇编部分的启动,我们在这个阶段至少要设置CPU工作模式、关闭看门狗、初始化内存(SDRAM)关闭MMU,禁中断,设置PLL,代码拷贝,为C语言准备运行环境(设置堆栈指针)等一些列工作。移植是个细活, 不熟悉的没法快起来,需要很有耐心。


因为我们基于smdk2410来移植xinna2440,那么我们要搞清楚哪些地方是我们需要移植的.


SOC的区别

smdk2410用的是s3c2410的芯片,xinna2440用的是s3c2440的芯片,因此我们只要弄清楚这两款芯片的区别,就知道针对cpu的不同而要移植哪些地方了.


1、两款芯片的主频不同,所以我们要修改PLL驱动


2、中断控制器不同,我们需要禁止所有中断


3、两款芯片的NandFlash控制器不同。


smdk2410是带有NORFlash的,可以从NORFlash启动,而xinna2440是不带NORFlash,我们只能从NandFlash启动,所以我们必须移植好NandFlash驱动。


BOARD区别

1、第一个就是要注意GPIO的链接不同,这里不详说。


2、第二要注意外围器件不同


xinna2440没有Norflash,所有无法从NORFlash启动

smdk2410和xinna2440用的Nandflash芯片不同,xinna2440用的是K9F2G08U0A

smdk2410用的是CS8900网卡芯片,xinna2440用了DM9000

查找入口点


用vim打开cpu/arm920t/u-boot.lds,可以看到,U-boot的起始代码位于cpu/arm920t/start.S中,我们可以从这里作为入手点,展开移植工作。

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

上一篇:U-Boot-2009-03移植笔记(从Nandflash启动一)
下一篇:U-Boot-2009-03移植笔记(点亮第一展灯)

推荐阅读最新更新时间:2026-03-20 08:40

U-Boot-2009-03移植笔记(第二阶段移植准备
在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函数的一开始,点亮
[单片机]
u-boot-2011.03在mini2440/micro2440上的移植 准备工作
u-boot自2010.09版以后有比较大的变化,首先是不再在顶层Makefile中配置板级支持文件,其次是重写了start.S和board.c,还有就是提供了对S3C2440的部分支持,使得在移植时难度减小。但由于是新版本,bug也有不少。本文尝试对u-boot-2011.03进行移植,主要参考了bscbem的日志和L_Backkom的专栏,在此表示感谢。 具体见http://www.linuxidc.com/Linux/2011-02/32772.htm 与 http://www.linuxidc.com/Linux/2011-03/33476.htm U-Boot源代码下载地址 http://www.linuxidc.com
[单片机]
FreeRTOS学习笔记(1)——移植源码到STM32F103
一、简介 FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS 结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。 最新版本 V9.0.0(2016年),尽管现在 FreeRTOS 的版本已经更新到 V10.4.1 了,但是我们还是选择 V9.0.0,因为内核很稳定,并且网上资料很多,因为 V10.0.0 版本之后是亚马逊收
[单片机]
U-Boot-2009-03移植笔记(第二阶段:时钟!)
根据U-Boot-2009-03移植笔记(第二阶段移植准备)最后的总结,需要针对S3C2440来移植时钟初始化的代码。 在lib_arm/board.c中,个init_sequence数组,定义了所有的初始化函数指针。 时钟的驱动,在函数board_init中,位于board/xinna2440/xinna2440.c,我们这里只支持S3C2440,删除文件头部的时钟参数宏定义,直接改为 1 #define FCLK_SPEED 1 2 3 #define M_MDIV 0x7f 4 #define M_PDIV 0x2 5 #define M_SDIV 0x1 6 7 #define USB_CLO
[单片机]
U-Boot-2009-03<font color='red'>移植</font><font color='red'>笔记</font>(第二阶段:时钟!)
TQ2440 学习笔记—— 28、移植U-Boot【U-Boot 的配置过程】
1、U-Boot 工程简介 U-Boot ,全称为Universal Boot loader, 即通用Bootloader。 它的名字有两重含义:可以引导多种操作系统:Linux、NetBSD、VxWorks0、QNX、RTEMS、ARTOS、Lynx等; 支持多种架构的CPU :PowerPC、MIPS、x86、ARM、NIOS、XScale等。 具有如下特性: 2、U-Boot 源码结构 在 U-Boot-1.1.6 的基础上分析和移植,从sourceforge 网站下载U-Boot-1.1.6.tar.bz2 后解压即可得全部源码。 U-Boot-1.1.6 根目录下共有26个子目录,可以分为4
[单片机]
TQ2440 学习<font color='red'>笔记</font>—— 28、<font color='red'>移植</font>U-Boot【U-Boot 的配置过程】
TQ2440 学习笔记—— 34、移植 Linux 内核【 Makefile 分析 】
一、Linux Makefile 分析 (1)Makefile 的作用 a、决定编译哪些文件 b、怎样编译这些文件 c、怎样连接这些文件,最重要的是它们的顺序如何 Linux 内核中有很多个Makefile 文件,下面是 Makefile 文件的五大类: a、决定编译哪些文件。 Linux 内核的编译过程从顶层 Makefile 开始,然后递归地进入各级子目录调用它们的Makefile,分为3个步骤。 1、顶层 Makefile 决定内核根目录下哪些子目录将被编进内核。 2、arch/$(ARCH)/Makefile 决定arch/$(ARCH) 目录下哪些文件、哪些目录将被编进内核。 3、
[单片机]
TQ2440 学习<font color='red'>笔记</font>—— 34、<font color='red'>移植</font> Linux 内核【 Makefile 分析 】
STM32学习笔记(1)如何移植FreeRTOS
STM32固体库创建demo 下载相关文件 keil5下载地址:keil5 下载相关的pack包:Keil.STM32F1xx_DFP.2.1.0.pack 移植所需的freertos源码:FreeRTOSv9.0.0.exe 移植所需的STM32固件库:STM32F10x_StdPeriph_Lib_V3.5.0.rar 建立固体库项目 建立如下图所示的项目组: BSP目录放相关的driver. FreeRTOS目录将放置我们所需移植的东西 Libraries目录将防止我们固体库所需的代码如下: USER放置main函数,并放置一些用户自己定制的一些文件 如何真的进行相关的操作可以参考S
[单片机]
STM32学习<font color='red'>笔记</font>(1)如何<font color='red'>移植</font>FreeRTOS
FreeRTOS+Lwip+STM32F407移植笔记
移植步骤: 1 - 先移植FreeRTOS的Demo; 2 - 再移植Lwip的文件(源码&sys_arch&lwip_comm); 3 - 单个实现TCPIP协议栈任务:TCP客户端、TCP服务器和UDP; 模块: - 内存管理:需要给 以太网驱动 、 FreeRTOS 、 Lwip 三个部分分配内存; - 以太网DMA描述符&以太网DMA Buffer - Lwip的RAM部分:ram_heap&内存池部分:memp; - FreeRTOS占用RAM由配置文件定义大小,用于操作系统中动态操作的分配; - 另外原子实现的内存管理方式中的内存管理表也会占用很大内存,与内存块大小密切相关;
[单片机]
FreeRTOS+Lwip+STM32F407<font color='red'>移植</font><font color='red'>笔记</font>
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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