ARM Cortex-A8/A9开发板 | ARM11开发板ARM11开发套件 | ARM9开发板ARM9开发套件 | 飞思卡尔I.MX28I.MX6开发板 |
tiny210/mini210开发板 | mini6410开发板/套餐 | Tiny6410开发板无线套件 | mini2440开发板/套餐 | micro2440开发板带核心板 | 友善开发板配件 模块 | QQ2440 V3 SBC-2410X |
FL2440 OK2440-IV V4 | OK2440-III OK2440V3 | TE2440-II TE2440V2 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | 开发板配件 模块和其他 |
Xilinx开发板/fpga开发套件 | altera开发板/fpga开发套件 | 基于FMC FPGA/DSP子卡 |
BeagleBoard原厂开发板 | PandaBoard原厂开发板 |
TI DM3730 DevKit8500D | TI系列 omap3530开发板 | ATMEL系列 开发板 | Samsung系列 开发板 | 开发板配件-仿真器 模块 | NXP LPC3250 mini3250 |
Tiny210 三星S5PV210 | Mini210/Mini210s开发板 | Tiny4412开发板Cortex-A9 | Tiny6410开发板 ARM11 | mini2440开发板 ARM9 | micro2440开发板 ARM9 | mini6410开发板 ARM11 | 友善ARM开发板配件 模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
FL2440 OK2440-IV V4 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | OK210/-A Cortex-A8 | TE2440-II TE2440V2 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | ARM开发板配件 模块等 |
Real6410开发板/套餐 | Real210开发板/Real2410 | WIFI GPS GPRS模块摄像头 |
Xilinx开发板/开发套件KIT | Altera开发板/开发套件KIT | 配套模块 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | 最小系统模块类(初学者勿选) | 开发工具 仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
DM3730/AM3715/AM3359 | OMAP3530AM1808AM3517 | 飞思卡尔Cortex-A9开发板 | ATMEL系列ARM开发板 | NXP LPC3250 LPC1788 | Samsung系列ARM开发板 | STM32系列F207/F407 | ARM开发板配件-仿真器 模块 |
Realv210 S5PV210开发板 | Real6410开发板 ARM11 | WIFI GPS GPRS模块摄像头 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | ARM小系统模块(初学勿选) | 开发工具 ARM仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
Exynos4412开发板A9四核 | UT-S5PV210 S5PC100 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 |
Xilinx开发板 FPGA开发套件 | altera开发板 FPGA开发套件 | FMC模块 配件 下载线 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
s3c2410 ARM9 FS2410 | s3c2440开发板 ARM9 | s3c44B0开发板 ARM7 | s3c6410 2450 2443/13 | PXA270 PXA320 PXA255 | Atmel 9200 9261 9G20 | Philips NXP开发板YL-LPC | FS-EP9315开发板ARM9 | LCD液晶屏TFT真彩/触摸屏 | ARM仿真器/仿真调试工具 | ARM开发板配套ARM核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯开发板UP-DRAGON-I | 物联网教学科研设备 | EDA/FPGA/SOPC教学科研 |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | YC-ePC-A系列人机界面 | Mars-EDA套件CPLD FPGA | 触摸屏LCD 摄像头 WI-FI模块 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器/仿真系统 | DSP开发板/DSP试验箱 | DaVinci系列多媒体平台 | Xilinx FPGA大学计划产品 | SEED教学实验系统 | FPGA/DSP FPGA开发板 | TI原厂开发板套件/CCS软件 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
广嵌实验室项目产品 | GEC2440/GEC6410开发板 |
泰克Tektronix示波器 | 普源RIGOL示波器 | USB虚拟示波器 |
UT-S5PC100 UT-S5PV210 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 | 开发板模块wifi gps等 |
EMA OMAP3530开发板 | EMA OMAP 3530核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx Altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯系列 UP-DRAGON-I |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | 触摸屏LCD 摄像头 WI-FI模块 | Mars-EDA套件CPLD FPGA | ePC系列工控一体机ARM9 A8 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器 | DSP开发板 | DSP实验箱 | Xilinx FPGA大学计划产品 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
ARM开发板S3C6410等 | Cortex-A8/ARM11仿真器 | ADSP Blackfin开发板 | FPGA Spartan-3E开发板 |
GEC2410开发套件ARM9 | GEC2440开发套件ARM9 |
泰克 示波器 |
起宰衡识ARMer9开辟体系硬件计划上和三星原装SMDK2410之间的区别。让uboot在ARMer9开辟体系上跑起来,如今只必要存眷如下的硬件区别,办理了下面这个题目,uboot就可以在ARMer9开辟体系上正常地从串口输出,进入提示符。很多下令都可以利用,固然有些下令必要做修改。
SMDK2410 : nor flash 是AMD的1M的;
ARMer9: 是Intel E28F128J3A, 两片并联,一共32M Bytes.
下载一个uboot-1.1.1.tar.bz2.;
tar jxvf uboot-1.1.1.tar.bz2;
在uboot 目次board/smdk2410 下的flash.c必要修改。这个是Flash的驱动,怎样写,必要参考E28F128J3A的Datasheet. 这里我们提供一个我们修改好的flash.c文件,您只必要将这个文件包围失board/smdk2410 下的文件即可。
(细致:你要安置了交错编译器才行哦)
修改uboot目次下的Makefile,将
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
修改成
ifeq ($(ARCH),arm)
CROSS_COMPILE = /opt/host/armv4l/bin/armv4l-unknown-linux-
endif
修改processor.h中:
union debug_insn
{
u32 arm;
u16 thumb;
}
修改成:
union debug_insn
{
u32 arm_mode;
u16 thumb_mode;
}
然后配置板子
make smdk2410_config
然后
make
在uboot目次天生uboot.bin;
通过sjf2410w步伐将uboot.bin下载到nor flash中, 地点为0的地方;
串口接在UART0上,uboot的启动信息将输出。
你将发明很多下令都可以利用了。uboot公然强大。
关于网络部分,由于ARMer9开辟体系利用也是CS8900A,以是代码部分险些不消做窜改,只必要在 include/configs/smdk2410.h中看看,有没有定义CONFIG_ETHADDR,CONFIG_IPADDR, CONFIG_SERVERIP这些宏没有,要是没有,请定义好。
#define CONFIG_ETHADDR 00:00:e0:ff:cd:15
#define CONFIG_IPADDR 192.168.0.5
#define CONFIG_SERVERIP 192.168.0.100
就如许修改一下,网络部分成果就通了,哈哈。
可以利用tftpboot下令从tftp办事器下载步伐到体系内存中。
#tftpboot 0x33000000 zImage
#bootm 0x33000000
利用uboot引导可实行映象的通用要领
uboot源代码的tools/目次下有mkimage东西,这个东西可以用来制作不压缩大概压缩的多种可启动映象文件。
mkimage在制作映象文件的时间,是在原来的可实行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,如许uboot才华辨认这个映象是针对哪个CPU体系布局的,哪个OS的,哪种范例,加载内存中的哪个位置, 入口点在内存的那个位置以及映象名是什么
root@Glym:/tftpboot# ./mkimage
Usage: ./mkimage -l image
-l ==> list image header information
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to 'arch'
-O ==> set operating system to 'os'
-T ==> set image type to 'type'
-C ==> set compression type 'comp'
-a ==> set load address to 'addr' (hex)
-e ==> set entry point to 'ep' (hex)
-n ==> set image name to 'name'
-d ==> use image data from 'datafile'
-x ==> set XIP (execute in place)
参数阐明:
-A 指定CPU的体系布局:
取值 表现的体系布局
alpha Alpha
arm A RM
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
-O 指定操纵体系范例,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
-T 指定映象范例,可以取以下值:
standalone、kernel、ramdisk、multi、firmware、script、filesystem
-C 指定映象压缩方法,可以取以下值:
none 不压缩
gzip 用gzip的压缩方法
bzip2 用bzip2的压缩方法
-a 指定映象在内存中的加载地点,映象下载到内存中时,要根据用mkimage制作映象时,这个参数所指定的地点值来下载
-e 指定映象运行的入口点地点,这个地点便是-a参数指定的值加上0x40(由于前面有个mkimage添加的0x40个字节的头)
-n 指定映象名
-d 指定制作映象的源文件
常用U-BOOT下令先容
1. ?大概help,得到全部下令列表;
2. help: help usb, 列出USB成果的利用阐明
3. ping:注:通常只能运行uboot的体系PING别的呆板
4. setenv: 设置环境变量
setenv serverip 10.36.20.49,设置TFTP Server的IP地点;
setenv ipaddr 10.36.20.200,设置IP地点;
setenv bootcmd ‘tftp 32000000 vmlinux; kgo 32000000’,设置启动下令(实际上便是一个脚本);
5. saveenv:在设置好环境变量以后, 生存环境变量值到flash中间;
6. tftpboot:tftpboot 0x800000 vmlinux, 将TFTP Server(IP = 环境变量中设置的serverip)中/tftpdroot目次 下的vmlinux通过TFTP协议下载到物理内存0x800000开始的地方。
7. kgo:启动没有压缩的linux内核,kgo 0x800000
8. bootm:启动通过UBOOT TOOLS—— mkimage制作的压缩LINUX内核, bootm 3200000;
9 flinfo:列出flash的信息
10. protect: 对FLASH举行写掩护或取消写掩护, protect on 1:0-3(便是对第一块FLASH的0-3扇区举行掩护),protect off 1:0-3取消写掩护
11. erase: 删除FLASH的扇区, erase 1:0-2(便是对每一块FLASH的0-2扇区举行删除)
12. cp: 将内存中数据烧写到Flash, cp 0x800000 0xc0000 0x40000(把内存中0x800000开始的0x40000字节复制到0xc0000处);
13. mw: 对RAM中的内容举行写操纵, mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF);
14. md: 表现RAM中的内容, md 0x800000;
15. loadb: 准备用 KERMIT协议吸取来自kermit或超等终端发送的文件。
16. nfs: nfs 32000000 192.168.0.2:aa.txt , 把192.168.0.2(LINUX 的NFS文件体系)中的NFS文件体系中的aa.txt 读入内存0x32000000处。
17. fatls:列出DOS FAT文件体系, 如:fatls usb 0列出第一块U盘中的文件
18. fatload: 读入FAT中的一个文件,如:fatload usb 0:0 32000000 aa.txt
19. usb相干的下令:
usb start: 起动usb 成果
usb info: 列出配置
usb scan: 扫描usb storage(u 盘)配置
Uboot对SMDK2410板的NAND Flash初始化部分没有写,
即lib_arm/board.c中的start_armboot函数中有这么一句:
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
puts ("NAND:");
nand_init(); /* go init the NAND */
#endif
但是在board/smdk2410目次下任意源文件中都没有定义nand_init这个函数。
以是必要我们补充这个函数以及这个函数涉及的底层操纵。
我们可以仿照VCMA9板的nand_init函数,VCMA9板是一款用S3C2410做CPU的DEMO Board,因此这部分操纵和SMDK2410 Demo Board很相似。大部分代码可以照搬。
起首将board/mpl/vcma9/vcma9.c中下面代码拷贝到board/smdk2410/ smdk2410.c中来。
/*
* NAND flash initialization.
*/
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
extern ulong
nand_probe(ulong physadr);
static inline void NF_Reset(void)
{
int i;
NF_SetCE(NFCE_LOW);
NF_Cmd(0xFF); /* reset command */
for(i = 0; i < 10; i++); /* tWB = 100ns. */
NF_WaitRB(); /* wait 200~500us; */
NF_SetCE(NFCE_HIGH);
}
static inline void NF_Init(void)
{
#if 0 /* a little bit too optimistic */
#define TACLS 0
#define TWRPH0 3
#define TWRPH1 0
#else
#define TACLS 0
#define TWRPH0 4
#define TWRPH1 2
#endif
NF_Conf((1<<15)|(0<<14)|(0<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0));
/*nand->NFCONF = (1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0); */
/* 1 1 1 1, 1 xxx, r xxx, r xxx */
/* En 512B 4step ECCR nFCE=H tACLS tWRPH0 tWRPH1 */
NF_Reset();
}
void
nand_init(void)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
NF_Init();
#ifdef DEBUG
printf("NAND flash probing at 0x%.8lX\n", (ulong)nand);
#endif
printf ("%4lu MB\n", nand_probe((ulong)nand) >> 20);
}
#endif
再将board/mpl/vcma9/vcma9.h中下面代码拷贝到board/smdk2410/ smdk2410.c中来。
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
typedef enum {
NFCE_LOW,
NFCE_HIGH
} NFCE_STATE;
static inline void NF_Conf(u16 conf)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
nand->NFCONF = conf;
}
static inline void NF_Cmd(u8 cmd)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
nand->NFCMD = cmd;
}
static inline void NF_CmdW(u8 cmd)
{
NF_Cmd(cmd);
udelay(1);
}
static inline void NF_Addr(u8 addr)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
nand->NFADDR = addr;
}
static inline void NF_SetCE(NFCE_STATE s)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
switch (s) {
case NFCE_LOW:
nand->NFCONF &= ~(1<<11);
break;
case NFCE_HIGH:
nand->NFCONF |= (1<<11);
break;
}
}
static inline void NF_WaitRB(void)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
while (!(nand->NFSTAT & (1<<0)));
}
static inline void NF_Write(u8 data)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
nand->NFDATA = data;
}
static inline u8 NF_Read(void)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
return(nand->NFDATA);
}
static inline void NF_Init_ECC(void)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
nand->NFCONF |= (1<<12);
}
static inline u32 NF_Read_ECC(void)
{
S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
return(nand->NFECC);
}
#endif
再将include/configs/vcma.9中下面代码拷贝到include/configs/smdk2410.h中来。
/*-----------------------------------------------------------------------
* NAND flash settings
*/
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
#define CFG_MAX_NAND_DEVICE 1 /* Max number of NAND devices */
#define SECTORSIZE 512
#define ADDR_COLUMN 1
#define ADDR_PAGE 2
#define ADDR_COLUMN_PAGE 3
#define NAND_ChipID_UNKNOWN 0x00
#define NAND_MAX_FLOORS 1
#define NAND_MAX_CHIPS 1
#define NAND_WAIT_READY(nand) NF_WaitRB()
#define NAND_DISABLE_CE(nand) NF_SetCE(NFCE_HIGH)
#define NAND_ENABLE_CE(nand) NF_SetCE(NFCE_LOW)
#define WRITE_NAND_COMMAND(d, adr) NF_Cmd(d)
#define WRITE_NAND_COMMANDW(d, adr) NF_CmdW(d)
#define WRITE_NAND_ADDRESS(d, adr) NF_Addr(d)
#define WRITE_NAND(d, adr) NF_Write(d)
#define READ_NAND(adr) NF_Read()
/* the following functions are NOP's because S3C24X0 handles this in hardware */
#define NAND_CTL_CLRALE(nandptr)
#define NAND_CTL_SETALE(nandptr)
#define NAND_CTL_CLRCLE(nandptr)
#define NAND_CTL_SETCLE(nandptr)
#define CONFIG_MTD_NAND_VERIFY_WRITE 1
#define CONFIG_MTD_NAND_ECC_JFFS2 1
#endif /* CONFIG_COMMANDS & CFG_CMD_NAND */
在include/configs/smdk2410.h中下面下令定义部分将CFG_CMD_NAND开关放开。
/***********************************************************
* Command definition
***********************************************************/
#define CONFIG_COMMANDS \
(CONFIG_CMD_DFL | \
CFG_CMD_CACHE | \
/*CFG_CMD_NAND |*/ \
/*CFG_CMD_EEPROM |*/ \
/*CFG_CMD_I2C |*/ \
/*CFG_CMD_USB |*/ \
CFG_CMD_REGINFO | \
CFG_CMD_DATE | \
CFG_CMD_ELF)
U-BOOT源代码目次布局先容
board:和一些已有开辟板有关的文件,比如Makefile和u-boot.lds等都和详细开辟板的硬件和地点分派有关。
common:与体系布局无关的文件,实现种种下令的C文件。
cpu: CPU相干文件,此中的子目次都因此U-BOOT所支持的CPU为名,比如有子目次arm926ejs、mips、mpc8260和nios等,每个特定的子目次中都包括cpu.c和interrupt.c,start.S。此中cpu.c初始化CPU、设置指令Cache和数据Cache等; interrupt.c设置体系的种种停止和非常,比如快速停止、开关停止、时钟停止、软件停止、预取中断和未定义指令等;start.S是U-BOOT 启动时实行的第一个文件,它重要是设置体系堆栈和事变方法,为进入C步伐奠定底子。
disk:disk驱动的分区处理惩罚代码。
doc:uboot移植的技能支持文档。
drivers:通用配置驱动步伐,比如种种网卡、支持CFI的Flash、串口和USB总线等。
fs:支持文件体系的文件,U-BOOT如今支持cramfs、fat、fdos、jffs2和registerfs。
include:头文件,另有对种种硬件平台支持的汇编文件,体系的配置文件和对文件体系支持的文件。
net:与网络有关的代码,BOOTP协议、TFTP协议、RARP协讲和NFS文件体系的实现。
lib_generic:与体系布局无关的通用例程的代码。
tools:创建S-Record格局文件 和U-BOOT images的东西的源代码。
U-BOOT的特点
U-BOOT支持SCC/FEC以太网、OOTP/TFTP引导、IP和MAC的预置成果, 这方面大概和别的BootLoader(如BLOB、RedBoot、vivi等)雷同。但U-BOOT还具有一些特有的成果。
◆ 在线读写Flash、DOC、IDE、IIC、EEROM、RTC,别的的BootLoader底子不支持IDE和DOC的在线读写。
◆ 支持串行口kermit和S-record下载代码,U-BOOT本身的东西可以把ELF32格局的可实行文件转换成为 S-record格局,直接从串口下载并实行。
◆ 辨认二进制、ELF32、uImage格局的Image,对Linux引导有分外的支持。U-BOOT对Linux 内核进一步封装为uImage。封装如下:
#{CROSS_COMPILE}-objcopy -O binary -R.note -R.comment -S vmlinux \ linux.bin
#gzip -9 linux.bin
#tools/mkimage -A arm -O linux -T kernel -C gzip -a 0xc0008000 –e 0xc0008000 -n “Linux-2.4.20” -d linux.bin.gz /tftpboot/uImage
即在Linux内核镜像vmLinux前添加了一个0x40个字节的特别头,这个头在include/image.h中定义,包括目标操纵体系的种类(比如 Linux,VxWorks等)、目标CPU的体系机构(比如ARM、PowerPC等)、映像文件压缩范例(比如gzip、bzip2等)、加载地点、入口地点、映像名称和映像的天生时间。当体系引导时,U-BOOT会对这个文件头举行CRC校验,要是精确,才会跳到内核实行。如下所示:
ARMer9# bootm 0xc1000000
## Checking Image at 0xc100000 ...
Image Name: Linux-2.4.20
Created: 2004-07-02 22:10:11 UTC
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 550196 Bytes = 537 kB = 0.55MB
Load Address: 0xc0008000
Entry Point: 0xc0008000
Verifying Checksum ... OK
Uncompressing Kernel Image ……… OK
◆ 单任务软件运行环境。U-BOOT可以动态加载和运行独立的应用步伐,这些独立的应用步伐可以利用U-BOOT控制外观的I/O函数、内存申请和停止办事等。这些应用步伐还可以在没有操纵体系的环境下运行,是测试硬件体系很好的东西。
◆ 监控(minitor)下令集:读写I/O,内存,寄存器、内存、外设测试成果等。
◆ 脚本语言支持(雷同BASH脚本)。利用U-BOOT中的autoscr下令,可以在U-BOOT中运行“脚本”。起首在文本文件中输入必要实行的下令,然后用tools/mkimage封装,然后下载到开辟板上,用autoscr实行就可以了。
① 编辑如下的脚本example.script。
echo
echo Network Configuration:
echo ----------------------
echo Target:
printenv ipaddr hostname
echo
echo Server:
printenv serverip rootpath
echo
② 用tools/mkimage对脚本举行封装。
# mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "autoscr example script" -d example.script /tftpboot/example.img
Image Name: autoscr example script
Created: Wes Sep 8 01:15:02 2004
Image Type: ARM Linux Script (uncompressed)
Data Size: 157 Bytes = 0.15 kB = 0.00 MB
Load Address: 0x00000000
Entry Point: 0x00000000
Contents:
Image 0: 149 Bytes = 0 kB = 0 MB
③ 在U-BOOT中加载并实行这个脚本。
ARMer9# tftp 100000 /tftpboot/example.img
ARP broadcast 1
TFTP from server 10.0.0.2; our IP address is 10.0.0.99
Filename '/tftpboot/TQM860L/example.img'.
Load address: 0x100000
Loading: #
done
Bytes transferred = 221 (dd hex)
ARMer9# autoscr 100000
## Executing script at 00100000
Network Configuration:
----------------------
Target:
ipaddr=10.0.0.99
hostname=arm
Server:
serverip=10.0.0.2
rootpath=/nfsroot
ARMer9#
◆ 支持WatchDog、LCD logo和状态指示成果等。要是体系支持splash screen,U-BOOT启动时,会把这个图像表现到LCD上,给用户更友爱的以为。
◆ 支持MTD和文件体系。U-BOOT作为一种强大的BootLoader,它不但支持MTD,并且可以在MTD底子上实现多种文件体系,比如cramfs、fat和jffs2等。
◆ 支持停止。由于传统的BootLoader都分为stage1和stage2,以是在stage2中添加停止处理惩罚办事非常困难,比如BLOB;而U-BOOT是把两个部分放到了一起,以是添加停止办事步伐就很方便。
◆ 细致的开辟文档。由于大多数BootLoader都是开源项目,以是文档都不是很充分。U-BOOT的维护职员意识到了这个题目,充分记录了开辟文档,以是它的移植要比BLOB等缺少文档的BootLoader方便。
编译uboot的时间,在processor.h中堕落
办理步伐:
修改processor.h中:
union debug_insn
{
u32 arm;
u16 thumb;
}
修改成:
union debug_insn
{
u32 arm_mode;
u16 thumb_mode;
}
博航网 www.broadon.net 版权所有
京ICP备10051899号-2 京公网安备110108006479号