课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 3.汇编语言 -作业 4.Bootloader -作业 5.Linux内核移植 6.嵌入式Linux程序设计 7.图形用户接口QT 8.其他框架介绍; 9.嵌入式物联网应用系统设计

配置U-Boot(以实验开发板为例)

1.进入U-Boot源码目录

[root@localhost jy-cbt]# cd ..   

[root@localhost /]# cd jy-cbt   

[root@localhost jy-cbt]# cd opencsbc-u-boot 

[root@localhost opencsbc-u-boot]#                

2.关注与平台有关的文件

1 /opencsbc-u-boot/Makefile

2 /opencsbc-u-boot/arch/arm/cpu/armv7/start.S

3 /opencsbc-u-boot/board/samsung/tiny210/tiny210.c

4 /opencsbc-u-boot/board/samsung/tiny210/Makefile

28 ifndef CONFIG_SPL_BUILD          /*是在编译第2阶段代码*/

29 COBJS     := tiny210.o           /*添加编译当前目录下的tiny.c*/

30 endif

36 SOBJS     := lowlevel_init.o mem_setup.o  /*添加编译当前目录下的.c文件  

5 /opencsbc-u-boot/boards.cfg

35 #Target     ARCH CPU    Board name  Vendor   SoC        Options

183 tiny210    arm  armv7  tiny210     samsung     s5pc1xx

183行定义了Board名字为tiny210,在编译U-Boot时输入的要与该名称一致。

6 /include/configs.h

2 #define CONFIG_BOARDDIR board/samsung/tiny210   /*定义板级支持包文件路径*/

3 #include <config_cmd_defaults.h>

4 #include <config_defaults.h>

5 #include <configs/tiny210.h>             /*定义板级头文件路径*/

6 #include <asm/config.h>

7 /opencsbc-u-boot/board/samsung/tiny210/lowlevel_init.S

31 #include <s5pc110.h>

32 #include "tiny210_val.h"

8/opencsbc-u-boot /board/samsung/tiny210/tiny210.c

200 void dram_init_banksize(void)

{

     gd->bd->bi_dram[0].start = PHYS_SDRAM_1; //仅定义一块SDRAM

     gd->bd->bi_dram[0].size = get_ram_size((long *)PHYS_SDRAM_1PHYS_SDRAM_1_SIZE);

206 //gd->bd->bi_dram[1].start = PHYS_SDRAM_2;  //定义两块时需要开启

207 //gd->bd->bi_dram[1].size = get_ram_size((long *)PHYS_SDRAM_2PHYS_SDRAM_2_SIZE);

}

3.定制tiny210.h文件内容

在定制U-Boot过程中,需要添加和修改tiny210.h内容。tiny210.h源文件存放路径:/opencsbc-u-boot/include/configs/tiny210.h

1)定义宏。

36 #define CONFIG_TINY210      1      /*定义ARM板名称为ting210*/

92 #define MACH_TYPE_TINY210   2456     /*机器码,要与操作系统中的定义一致*/

93 #define CONFIG_MACH_TYPE    MACH_TYPE_SMDKV210

2)修改目标机命令行提示符(个性化处理)。

134 #define CONFIG_SYS_PROMPT     "[tiny210-JYX]# "

经过编译下载后,U-Boot在下载模式时控制台上提示符将被设置为[tiny210-JYX]#

3)设置网络参数。

437 #define CONFIG_ETHADDR     22:40:5c:26:0a:5b

438 #define CONFIG_NETMASK        255.255.255.0

439 #define CONFIG_IPADDR      192.168.1.15    /*依据使用环境调整* /

440 #define CONFIG_SERVERIP    192.168.1.40

441 #define CONFIG_GATEWAYIP   192.168.1.1

4)定义内核加载地址。

142 #define CONFIG_SYS_LOAD_ADDR (PHYS_SDRAM_1 + 0x1000000)     

165 #define PHYS_SDRAM_1     MEMORY_BASE_ADDRESS

66 #define MEMORY_BASE_ADDRESS    CONFIG_SYS_SDRAM_BASE

63 #define CONFIG_SYS_SDRAM_BASE  0x20000000

此处定义内核加载地址为0x21000000。在随后更新系统过程中,该地址也用于下载程序的SDRAM的首地址。

5)定义NandFlash设备。

426 #define CONFIG_CMD_NAND              /*定义NandFlash */

427 #if defined(CONFIG_CMD_NAND)

428 #define CONFIG_CMD_NAND_YAFFS          /*定义文件格式为YAFFS  */

429 #define CONFIG_CMD_MTDPARTS

430 #define CONFIG_SYS_MAX_NAND_DEVICE 1

431 #define CONFIG_SYS_NAND_BASE (0xB0E000000)

6)定义启动设备参数。

176 #define CONFIG_ENV_IS_IN_MMC    1      /*此版本仅支持SD卡启动*/

177 #define CONFIG_SYS_MMC_ENV_DEV    0

178 #define CONFIG_ENV_SIZE       0x4000   /*16KB */

179 #define RESERVE_BLOCK_SIZE       (512)

180 #define BL1_SIZE                 (8 << 10)   /*8 K reserved for BL1*/

181#define CONFIG_ENV_OFFSET (RESERVE_BLOCK_SIZE + BL1_SIZE + ((16 + 512) * 1024))

182 #define CONFIG_DOS_PARTITION    1

7)和硬件平台SDRM资源有关配置

143 #define CONFIG_SYS_LOAD_ADDR  (PHYS_SDRAM_1 + 0x1000000)      //加载程序首地址

163 #define CONFIG_NR_DRAM_BANKS   1      // 2     //1DRAM

164 #define SDRAM_BANK_SIZE    0x20000000         //DRAM容量为512MB

316 #define DMC0_MEMCONTROL    0x00202400  /* MemControl BL=4,1Chip DDR2 326 Type,dynamic self refresh force precharge dynamic power down off*/

317 #define DMC0_MEMCONFIG_0   0x20E00323  /* MemConfig0      256MB config 8 banksMapping Method[12:15]0:linear      1:linterleaved 2:Mixed */

318 #define DMC0_MEMCONFIG_1   0x00E00323  /* MemConfig1*/

功能释义:

316-318 声明SDRAM区使用四片128MB DDR2实现1个地址连续存储空间,容量为512MB

S5PV210_Usermanual_Rev1.0.pdf P624/P626/ P627

316 DMC0_MEMCONTROL = 0x00202400  声明存储器类型为DDR2型。

317 DMC0_MEMCONFIG_0 = 0x20E00323 声明存储空间地址。

[31:24] = 0x20:   起始首地址为0x2000_0000

[23:16] = 0xE0:   定义上限偏移地址为0x1fff_ffff,表示存储容量为512MB

[15:12] = 0x0: 地址映射方法为线性

[11:8]  = 0x3: 10位列地址

[7:4]   = 0x2: 14位行地址

[3:0]   = 0x3: 8

318 DMC0_MEMCONFIG_0 = 0x00E00323 声明芯片基址是0x0000_0000,存储空间地址范围是0x0000_0000 0x1fff_ffff

(8)关键设置参数。

98 /* select serial console configuration  声明控制台使用串口1 */

99 #define CONFIG_SERIAL_MULTI      1

100 #define CONFIG_SERIAL0        1      /* use SERIAL 0 */

101 #define CONFIG_BAUDRATE         115200

102 #define S5PC210_DEFAULT_UART_OFFSET  0x020000

116 #include <config_cmd_default.h>

127 #define CONFIG_BOOTDELAY      3      /* 等待3秒开始引导内核代码*/