ARM_s5pv210_porting_1

Linux系统移植
1.学习嵌入式课程的目的?
基于嵌入式硬件平台做程序开发,包括系统程序,应用程序
(1)基于裸板开发
没有操作系统支持,没有库,所有的代码,包括驱动和应用程序都是需要自己开发,实现相对简单的功能,可以,如果实现复杂系统,难度比较大。

(2)基于操作系统
操作系统为我们提供了大量的系统调用,使用大量的库,程序员只要知道如何使用,大大降低程序的开发难度。

接下来,需要做的就是开发板安装操作系统,使其将来支持基于操作系统开发的应用的运行。

Windows安装哪些内容?
(1)准备安装程序
(2)引导程序BIOS+Bootloader
(3)Windows操作系统内核(驱动程序)
(4)Windows文件系统(应用程序)

TPAD安装哪些内容?
(1)准备安装程序
我们可以再一些指定的官方网站上下载到标准版本的引导程序的源代码,Linux操作系统的源码,制作文件系统的软件包的源码。但是由于嵌入式硬件平台是非标准化,之间存在差异性,不能直接在硬件平台上运行,而是需要经过移植(修改)的过程。
把不能用的代码经过移植(修改)->与硬件匹配一致且能使用的代码

(2)引导程序 u-boot.bin

(3)操作内核 zImage

(4)文件系统 rootfs.cramfs

tarena#nand erase
tarena#tftp 20008000 uboot.bin
tarena#nand write 0x20008000 0 100000
tarena#tftp 20008000 zImage
tarena#nand write 0x20008000 500000 500000
tarena#tftp 20008000 rootfs.cramfs
tarena#nand write 20008000 a00000 1000000

移植课做什么?
1.基于移植前的代码经过移植(修改)成为可以用的代码。
——掌握移植的方法和原理
2.将移植后的代码生成可执行程序(u-boot.bin,zImage,rootfs.cramfs)烧写到开发板上。
——熟练操作
/********************************************/
1.引导程序(BIOS+Bootloader)
Boot+loader
在操作系统运行之前运行的一段代码
(1)启动系统:Boot
初始化硬件设备,建立内存空间映射图,将系统的软硬件环境带到一个合适的状态。
tarena#
(2)Loader:
将操作系统的内核文件加载至内存,之后跳转到内核所在的内存地址运行。

2.操作系统内核(Linux)
www.kernel.org
Linux内核的本质:
(1)C语言:内核就是C函数集合。
(2)硬件:内核就是硬件资源的管理者。
(3)应用程序:内核是服务的提供者。
内核功能:
(1)系统调用:实现应用程序和内核之间的交互。
(2)进程管理:进程创建,终止,进程间通信,进程间调度
(3)内存管理
(4)设备驱动:
(5)虚拟文件系统
(6)平台相关代码
(7)网络协议

3.文件系统
应用程序和库
/**********************************************/
Bootloader
uboot(源码:ftp://ftp.denx.de/pub/u-boot
uboot通用性:
1.支持多种架构的CPU:ARM,PowerPC,MIPS等
2.支持多种操作系统:Linux,Vxworks,QNX等

u-boot_CW210_1.3.4

u-boot.bin源码
移植uboot,分析源码,将u-boot源码:
(1)与硬件相关
(2)与硬件无关

1.与CPU相关的目录
cpu:包含和CPU架构相关的代码,u-boot支持的CPU在该目录下对应的一个子目录。
2.开发板相关的目录
board:包含和开发板相关的文件,每一个开发板都以一个目录出现在该目录下
3.driver各类具体设备的驱动,基本上可以通用
4.lib_arm支持ARM架构下的通用文件
5.include/configs/CW210.h(重要)
定义了大量宏定义

找到u-boot.bin的入口点
链接脚本:u-boot
配置编译:u-boot:
make CW210_config
编译u-boot,通过查看u-boot的编译过程,找到链接脚本
make

这里写图片描述
通过分析u-boot的编译过程,确定了
(1)链接脚本
这里写图片描述
(2)指定u-boot.bin的代码段的链接地址:0xC3e00000

接下来,u-boot.lds文件:
这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述
//自定义.u_boot_cmd段,目的是链接过程中,将命令结构体链接到该段中,便于命令的查找,执行命令的处理函数

接下来分析start.S
cpu/s5pv210/start.S

161 reset:
msr cpsr_c,#0xd3

321 bl lowlevel_init//底层硬件初始化
//定义在lowlevel_init.S文件,

关闭看门狗
这里写图片描述
这里写图片描述

初始化系统时钟
122 /init system clock/
123 bl system_clock_init

初始化SDRAM控制器
125 /Memory initialize/
126 bl mem_ctrl_asm_init

初始化串口控制器
129 /for UART/
130 bl uart_asm_init

初始化Nand Flash控制器
139 /simpli init for NAND/
140 bl nand_asm_init

搬移u-boot.bin到SDRAM,NandFlash,SDRAM可用
通过u-boot.bin代码实现搬移
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值