- 论坛徽章:
- 0
|
ARM Linux开发阶段性总结(转载2)
http://xianzilu.spaces.live.com/?_c11_blogpart_blogpart=blogview&_c=blogpart&partqs=amonth%3d5%26ayear%3d2006
5月23日
U-BOOT针对SMDK2410的移植。
最近考试好忙,明天还要去长春出差,郁闷,周五考我学生生涯的最后一科——机械动力学。
希望你看了我上一篇Blog,呵呵。这篇是继续的。我假设你已经建立了我推荐的开发环境。
今天文章里所有的图片在相册“5-23 U-BOOT针对SMDK2410的移植”里面。
给大家秀一下我的SUSE。(5-23 SUSE)
工作开始了,先把U-boot解压缩到你喜欢的地方。然后打开Source Navigator,选择New Project。在接下来的窗口中,选择一个你喜欢的Project File的名字,然后在Add Directory里选择你把U-Boot1.1.2解压缩到的那个目录。再选择OK。然后等等,U-Boot这个变态的东西有143MB大……接下来出现了一个窗口。(5-23 SNAV启动)这个窗口里列出了U-Boot所有的源代码文件。上面的Pattern是为了便于你查找某个文件输入文件名的地方。
U-Boot是一种通用的Bootloader,它支持很多种不同的板子。我用的SBC2410X(友善之臂的)就是它支持的SMDK2410开发板的一种衍生。U-BOOT同时支持自定义配置的开发板,具体的配置方法参见U-Boot目录下的Readme文件。U-Boot关于各种板子的配置文件放在/board目录下,我们的SMDK2410也在那里具体的目录是/board/smdk2410,其下有主要几个文件:flash.c——关于NORFLASH操作的函数;config.mk——指定U-BOOT代码重新加载的基址;memsetup.s——汇编语言写的内存初始化程序,在start.s中调用,以后介绍;smdk2410.c——SMDK2410目标板初始化等函数。还有一个重要的文件是在U-Boot目录/include/configs下的smdk2410.h,包含了很多对目标板设置的宏。这几个文件中的配置与移植的目标板严格对应,如果你在SMDK2410的基础上重新设计了目标板硬件,那就必须修改这些文件中的相关内容。
其实有了Source-Navigator这些文件的位置就变得无关紧要了,你只要在Pattern中输入你要查找的文件的前缀,文件就会列出在下面的列表中。你就输入smdk2410,回车,出现了2个文件:smdk2410.c和smdk2410.h,刚开始移植不需要搞太复杂的东西,只修改smdk2410.h就可以了。smdk2410.h的内容和要修改的地方(红色)如下:
/*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH
* Marius Groeger
* Gary Jennejohn
* David Mueller
*
* Configuation settings for the SAMSUNG SMDK2410 board.
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
#ifndef __CONFIG_H
#define __CONFIG_H
/*
* If we are developing, we might want to start armboot from ram
* so we MUST NOT initialize critical regs like mem-timing ...
*/
#define CONFIG_INIT_CRITICAL /* undef for developing */
/*
* High Level Configuration Options
* (easy to change)
*/
#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
/* input clock of PLL */
#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
#define USE_920T_MMU 1
#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
/*
* Size of malloc() pool
*/
#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
/*
* Hardware drivers
*/
#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
#define CS8900_BASE 0x19000300
#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
/*
* select serial console configuration
*/
#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
/************************************************************
* RTC
************************************************************/
#define CONFIG_RTC_S3C24X0 1
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE
#define CONFIG_BAUDRATE 115200
/***********************************************************
* 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)
/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
#include
#define CONFIG_BOOTDELAY 3
/*#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,9600" */
#define CONFIG_ETHADDR 08:00:3e:26:0a:5b
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 202.202.202.218
//你的开发板的IP地址
#define CONFIG_SERVERIP 202.202.202.118
//你的运行Linux的电脑的IP地址
//这些设定解决的是网络下载程序的问题
/*#define CONFIG_BOOTFILE "elinos-lart" */
/*#define CONFIG_BOOTCOMMAND "tftp; bootm" */
#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
/* what's this ? it's not used anywhere */
#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
#endif
/*
* Miscellaneous configurable options
*/
#define CFG_LONGHELP /* undef to save memory */
#define CFG_PROMPT "LXZROB # " /* Monitor Command Prompt */
//开发板命令提示符,你可以改成你喜欢的任何字符串
#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
#define CFG_MAXARGS 16 /* max number of command args */
#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
#define CFG_LOAD_ADDR 0x33000000 /* default load address */
/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
/* it to wrap 100 times (total 1562500) to get 1 sec. */
#define CFG_HZ 1562500
/* valid baudrates */
#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
/*-----------------------------------------------------------------------
* Stack sizes
*
* The stack sizes are set up in start.S using the settings below
*/
#define CONFIG_STACKSIZE (128*1024) /* regular stack */
#ifdef CONFIG_USE_IRQ
#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
#endif
/*-----------------------------------------------------------------------
* Physical Memory Map
*/
#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
#define CFG_FLASH_BASE PHYS_FLASH_1
/*-----------------------------------------------------------------------
* FLASH and environment organization
*/
#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
#if 0
#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
#endif
//NORFLASH定义,使用的是1MByte的还是512kByte的
#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
#ifdef CONFIG_AMD_LV800
#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
#endif
#ifdef CONFIG_AMD_LV400
#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
#endif
/* timeout values are in ticks */
#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
#define CFG_ENV_IS_IN_FLASH 1
#define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */
#endif /* __CONFIG_H */
代码中红色的地方是我修改过的,可以对比原始的文件,就可以看出不同。
修改完了以后别忘了保存,然后到终端下面,输入
make distclean
……一堆E文飘过……
make smdk2410_config
Configuring for smdk2410 board...
make
……一堆E文连绵不断的飘过,你可以喝喝水,嗑瓜子……
如果没有错误的话,就会在U-Boot目录下生成U-Boot.bin文件。如果有错误,恭喜你,你的麻烦事情来了。只要你按照我这篇文章和上篇文章的步骤来做,不会有错误的。值得注意的是,必须使用U-Boot1.1.2和arm-linux交叉编译器2.95.3 ,另外看看是不是之前路径没有设置,即
export PATH=/usr/local/arm/2.95.3/bin:$PATH没有输入,呵呵,还是没有研究明白SUSE的config怎么改。
生成的U-Boot.bin烧写到开发板的NORFLASH中,移植就完成了。烧写工具的下载地址是
:http://www.samsung.com/Products/Semiconductor/SemiSecure/S02/MobileSoC/ApplicationProcessor/ARM9Series/S3C2410/SECJTAGFlashSJFNANDNORFlash_v4.zip
如果不能下载,到这个页面通过注册下载:
http://www.samsung.com/Products/Semiconductor/MobileSoC/ApplicationProcessor/ARM9Series/S3C2410/S3C2410.htm
下载时选择Utility中的SEC JTAG Flash(SJF) NAND,NOR(AMD,Strata) Flash。当然,如果你买了开发板,一般就会带有这个烧写程序了,不需费心下载,这里只是告诉你最本源的出处。
推荐在Windows的虚拟DOS环境中完成烧写,命令格式sjf2410 /f:u-boot.bin。烧写速度很慢,大约需要10分钟。烧写完成后,将启动选择跳线跳到NORFlash,重启开发板,串口就有输出了。串口调试工具推荐使用Windows自带的超级终端(程序〉附件〉通讯〉超级终端),下面是U-BOOT启动的提示信息:
U-Boot 1.1.2 (May 22 2006 - 02:30:03)
U-Boot code: 33F80000 -> 33F98380 BSS: -> 33F9C47C
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 1 MB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
LXZROB #
输入help可以看到U-Boot的操作指令列表:
? - alias for 'help'
autoscr - run script from memory
base - print or set address offset
bdinfo - print Board Info structure
boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
bootvx - Boot vxWorks from an ELF image
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
date - get/set/reset date & time
dcache - enable or disable data cache echo - echo args to console
erase - erase FLASH memory
flinfo - print FLASH memory information
go - start application at address 'addr'
help - print online help
icache - enable or disable instruction cache
iminfo - print header information for application image
imls - list all images found in flash
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loop - infinite loop on address range
md - memory display
mm - memory modify (auto-incrementing)
mtest - simple RAM test
mw - memory write (fill)
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
sleep - delay execution for some time
tftpboot- boot image via network using TFTP protocol
version - print monitor version
17:02 |
添加评论
|
固定链接
|
引用通告 (0)
|
记录它
5月15日
觉得应该开始写BLOG了。
很长时间都没有动这个BLOG。
前一段时间开始研究嵌入式Linux,准确说是ARM Linux。收获很大,挫折很多,为了把我的研究历程记录下来,我写下这些东西。
首先,事情起源于我的一个非常NB的师兄,他是我们所第一个在SAMSUNG的S3C2410上移植成功Linux的人,高薪被IBM挖走,还有撅掉中兴华为的经历……
然后,受到IBM招牌的蛊惑,我决定开始做些什么,当然是可以用在我机器人上的东西。参考实验室现有的资源,我决定建立这样一个体系(相册里:5-15-系统.gif)。
于是有一天我在淘宝上看到一个超便宜的ARM9开发板,加上8寸液晶才RMB15XX。于是当机立断,买下——当然是实验室老板报销,哈哈。这里给出那位可爱的卖家店铺:
http://shop33371214.taobao.com/
很快收到了板子,还是不错的一块,有S3C2410 / 64MB SDRAM / 64MB NANDFLASH / 1MB NORFLASH / SD 卡口 / CS8900 10M Ethernet / UDA1341。软件也不错,自带Wince 3.2 Platform Builder,还有ARM Linux。
我主要想使用Linux,虽然开发板的制作者已经移植了Linux,但是他用的是功能比较差的VIVI Bootloader。我想使用著名的U-Boot。于是我的噩梦开始了……
为了不让别人经历同样的噩梦,我把我现在知道的都写出来。
ARM是一个开放体系的处理器,ARM9核是其中的一个版本(关于这方面的知识可以Google一下),目前搞嵌入Linux的主要有ARM7和ARM9两个核,大多数ARM7核没有MMU(Memory Management Unit),只有MPU(Memory Protect Unit),因此,只能运行uCLinux。而S3C2410用的是ARM920T核,支持全功能的MMU,Linux内核稍加修改和裁减就可以直接运行在其上。(关于uCLinux和ARM Linux的区别Google一下,主要是在内存管理上,ARM Linux支持虚拟内存管理)
我想能来看这篇文章的人都应该会基本的单片机设计知识,原来我也是以为和单片机开发一样,ARM开发一定要有一个仿真器,所有的程序从ARM开发环境ADS中编写,然后烧写进ARM的Flash。但是这种方法仅仅适合于很简单的应用以及资源很少的ARM芯片;像S3C2410这种芯片,就不太适合使用了。请你记住,只要你走上了ARM Linux开发这条路,那就意味着你主要做的工作是移植别人的代码,而不是自己编写了。如果你有意见,那你就自己写一套完整TCP/IP通信底层函数出来看看。我不知道别人怎么做的,我觉得只需要在烧写Bootloader的时候使用仿真器,当然,下载线也可以,其他时候主要还是使用Bootloader来运行和调试程序。所以Bootloader是十分重要的。
Bootloader有很多种,例如VIVI,U-Boot,ARM-Boot等。其实我也没有怎么调查,只是听说U-Boot功能强大,挺不错的,我就想用U-Boot了,呵呵。从我的观察来看U-Boot对我最有用的优点在于可以通过网卡下载程序到内存中,这比VIVI的115200bps的串口下载要高的多。这里给出U-Boot的主页:
http://sourceforge.net/projects/u-boot
Linux下的程序是原代码公开的,这个大家都知道。他们遵循一个开源代码的协议,具体什么我也不知道,我现在明白的,sourceforg.net就是这些开源代码的老巢(U-Boot是其中的一个项目,其实U-Boot也有自己的主页,同样ARM-Linux也有),你可以从上面下载你所需要的源代码。
我假设你和我一样,一直在用Windows。由于U-Boot和Linux沾上边了(呵呵,原谅我这么白痴的理解方式),U-Boot编译必须在Linux下进行,因此你必须建立一个Linux开发环境。摆在你面前的有5条路:1、威胁盖茨让他让Windows支持Linux编译器gcc否则就杀了他;2、在电脑上安装Linux,和你可爱的Windows系统共存,通过硬盘交换开发文件;3、找一台电脑安装Linux,然后用网络共享你的开发文件;4、安装Cygwin,在Windows下面建立Linux环境(Google一下);5、使用虚拟机,在其上安装Linux。下面我说说这些方法的优缺点:1、不用考虑优缺点,除非你是盖茨的老爸;2、安装方便,节约成本,但是很容易破坏原有的Windows系统(我假设你和我一样之前是一个Linux白痴;3、安装方便,稳定性好,不容易破坏资料,但是钱是一个既可爱又可恨的东西;4、节约成本,可以直接在Windows下操作,但是我试过,以Windows文件系统的超低效率来看,处理Cygwin那么多琐碎的文件,会让你觉得你在让你电脑的硬盘自杀;5、对系统硬件的要求高,虚拟机仿真PC硬件能力差,但是灵活方便,可以随意安装,不必担心破坏你现有的文件系统,而且有“还原”功能,只要你觉得不爽,一键就恢复原来的样子。我采用的是第5种方法。为了研究明白怎么开发,我一共装了不下10次Linux系统,你用方法2试试看,保证你的Windows体无完肤。
下载一个"VMWare",太多地方可以下载了,例如
http://www.skycn.net
。然后安装,新建一个虚拟机,具体方法大致如下(我用的是VM5.0):菜单File>New>Virtual Machine,点Next,Virtual Machine configuration选Typical,点Next,Guest operation system选Linux,Version选你打算安装的Linux的类型(我知道Red Hat很流行,但是我发现它界面不适很舒服,而且和Windows连接的网络文件功能有BUG,我用的是SUSE9.2),点Next,选名字和虚拟机在你硬盘上保存的地方,点Next,Network connection一定要选Use bridged netwroking(这项的意义在于你的虚拟机可以在你的真实PC所在的局域网中有一个自己的虚拟IP地址,也就是说你可以像访问一台真实存在于局域网中的电脑一样访问你的虚拟机,这给调试过程中的文件传送带来很大的方便,另外你一定要有网卡,没有网卡搞什么Linux开发,呵呵),点Next,给你的虚拟机分配一定的硬盘空间,一般20GB就够了,最好选择Allocate all disk space now,这样能提高你的虚拟机的工作速度,如果你的电脑使用的是FAT或FAT32文件系统,一定要把Split disk into 2GB files钩上,因为FAT32单个文件最大大小为4GB,然后就Finish了。之后你应该马上选择菜单VM>Setting来配置你的虚拟机的硬件,例如可以加上串口、并口什么的,建议在安装操作系统之前做这一步,Linux可没有Windows那么好的Plug&Play特性。点击工具栏上的Power on就可以打开你的虚拟机了,你会发现软件的显示不就是一台电脑的启动过程么?工具栏上有三个关于Snapshot的按钮,很有用,你可以研究一下VMWare的帮助文档,他们可以实现“一键恢复”的功能,我假设你是和我一样的Linux使用白痴,如果你做错了某步操作,系统出现了令你不爽的情况,你可以用这个功能。
然后安装Linux,现在的Linux安装已经很人性化了,基本上你会安装Windows就会装。注意的是,软件包的选择,如果你使用SUSE,建议你使用KDE环境(GNOME下网络共享访问很不爽,而且KDE有一个“Super User Terminal”,可以在你以一般用户登陆的情况下进行超级用户的操作),另外还必须安装samba(Windows网络文件访问),C++ development之类的,如果你第一次装,那就都选上把,反正就是装久一点而已。安装过程中会让你配置网卡,按照一般的局域网配置方法就可以了,具体的安装方法Google一下。
安装好了Linux,接下来安装VMWare的驱动,选择菜单中的VM>Install VMTools...,这时你的虚拟机的光驱里就会出现2个文件,一个是软件包,一个是压缩文件;不要以为安装了那个软件包就安装上驱动了(我原来一直这么以为,5555),安装完软件包需要切换到ROOT终端,执行软件包安装目录里头那个vmware-install.pl,(终端就是类似DOS的那种窗口,具体的终端命令Google一下)。装完了你就会发现,不用按CTRL+ALT鼠标可以轻松的移出虚拟机屏幕了,呵呵。
上网,下载来U-Boot的源代码,解压缩到你喜欢的目录。你会发现,有好多好多文件啊!因为U-Boot不仅仅支持ARM9,而且还支持很多其他平台。你需要在文件的海洋中找到你要看的东西,太难了。推荐一个专门用来解决这个问题的软件,Source Navigator,同样是一个开源代码软件,下载地址
http://sourcenav.sourceforge.net/
,下载完是一个压缩包,需要解压缩,然后编译,然后安装。压缩包里有说明文件,就按照那个“Unix”下安装的操作步骤做就可以了,安装的前提是你正确安装了C++编译器。我不写步骤了,要想学会开发嵌入Linux,正常Linux的软件都不会安装不是一个笑话?Source Navigator最方便的地方是可以查找外部引用函数,使用的话自己摸索,相信大家都是高手(哈哈,这么推断,我更是高手,臭屁一下)。
如果你已经安装了Source Navigator,你一定对Linux下的程序开发和编译有一定的概念了。一般,你可以从开源工程网站上获得代码,然后通过编译,变成你自己机器上运行的代码。但是要开发嵌入式Linux,你机器上已经有的编译器就无能为力了,因为嵌入式系统和你的PC使用的是不同的指令系统。要完成这样的编译过程,你需要“交叉编译器”,英文关键字“CROSS COMPILER”或者“CROSS TOOLCHAIN”。ARM的交叉编译器可以从ARM-Linux的官方主页下载到,地址是
http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/
ARM-Linux官方主页:
http://www.arm.linux.org.uk/
。我推荐使用2.95.3版本的,因为稳定。我原来用的是U-Boot的官方DENX的主页上的ELDK4.0,版本是很新,但是编译出来的程序有问题,在进行指针调用的时候就死机(我觉得应该是非法指令中断,ARM体系中有这个中断),这个问题折腾了我研究U-Boot编译的大多数时间,我从U-Boot的第一行代码开始研究到出现问题的地方,烧写了几十次Bootloader文件(一次可是10分钟啊),终于判断出了应该是编译器的问题。但是使用2.95.3版本也要付出代价——只能编译较低的U-Boot版本(1.1.4肯定编译不过,因为一个编译选项不支持,1.1.3我没有试过,1.1.2成功通过)。交叉编译器的安装方法在下载页面的下方有详细的说明,关于设置缺省路径,可以使用export PATH=/usr/local/arm/2.95.3/bin:$PATH这句指令,好像不能永久生效,永久的方法我不知道,毕竟我不熟悉Linux呵呵,以后补上。
安装完编译器就可以编译了,编译的方法详见U-Boot的说明文档。我可以举个例子,如对于我的开发板,和SAMSUNG的SMDK2410完全兼容,只要输入
# make distclean
# make smdk2410_config
# make
就可以了。具体的以后我深入研究了再写出来。编译后会在你的U-Boot源代码所在目录生成几个文件,其中U-Boot.bin就是要往NORFLASH里烧写的文件。烧写的工具和来源我以后介绍。
实验室清楼了,我就写到这里,今天主要说的是开发环境的建立,这可是我血泪安装Linux的时间换来的经验。对了,补充一点,在Linux下要很经常使用终端窗口,我上面所写的命令都是在终端窗口下输入的,这可能对那些没有经历DOS时代的微软用户来说有一些不习惯,呵呵。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/81965/showart_1834736.html |
|