您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页第一组实训报告

第一组实训报告

来源:意榕旅游网


《基于Linux的嵌入式系统设计》

组 号: 班 级: 小组成员:

课程名称:《基于Linux的嵌入式系统设计实训》 指导教师: 提交日期:

摘 要

综合应用ARM嵌入式系统设计的相关专业知识,通过一个典型嵌入式系统项目的设计与开发,学习嵌入式系统的设计与开发。本次实训通过一个典型的嵌入式系统方案的设计、硬件平台的搭建、项目完成后的评估总结报告的撰写等完整工作过程的训练,培养学生完成一个实际嵌入式系统产品设计开发项目的能力

每个学生应通过本实训项目课程的学习,培养自己系完整、具体的完成一个嵌入式系统设计项目所需的工作能力,通过信息收集处理、方案比较决策、制定行动计划、实施计划任务和自我检查评价以达到各种能力的训练,以及团队工作的协作配合,锻炼学生自己在今后职场应有的团队工作能力。 对此我们对于嵌入式系统也有了更加深入的了解,从而帮助我们更加有力的了解我们的专业,对于我们以后的学习有了 更一步的了解。

2

目录

第1章 概述 ................................................... 4 第2章 系统总体设计............................................. 4

2.1...................................................... 4

第3章 系统硬件电路分析......................................... 6 第4章 软件功能设计............................................. 8

4.1 交叉编译环境的建立.................................. 8 4.2 u-boot的分析与移植 ................................. 8

第5章 软件的下载与调试........................................ 18 结 论.......................................................... 24 致 谢.......................................................... 25 参考文献....................................................... 25 附 录.......................................... 错误!未定义书签。

3

第1章 概述

本实训项目

本实训项目是以嵌入式系统为目标的一次平台操作。所谓嵌入式系统就是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,实用于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。ARM嵌入式芯片是一种高性能、低功耗的RISC芯片,世界上几乎所有的主要半导体生产商都生产基于ARM体系机构的通用芯片,且基于ARM内核的嵌入式处理器已经成为市场主流。而且Linux是免费发行的、快速高效的操作系统,在过去的几年中,基于开源组织的Linux嵌入式操作系统得到了长远的发展。嵌入式Linux是按照嵌入式操作系统的要求设计的一种小型操作系统。由一个内核以及一些根据需要进行定制的系统模块组成。

本实训项目是综合应用基于Linux的ARM嵌入式系统设计的相关专业知识,在此基础上完成U-Boot、Linux内核的移植。通过一个典型的基于Linux嵌入式系统项目的设计与开发,学习嵌入式系统的设计与开发流程。

本学期实训进一步将在课程中已初步掌握的嵌入式系统的相关知识、Linux下的编程能力融合在一起,通过一个典型的基于Linux的ARM嵌入式系统的方案的设计、硬件平台的搭建、软件系统的建立、产品的调试与项目完成后的评估总结报告的撰写等完成工作过程的训练,培养学生的综合职业能力。

第2章 系统总体设计

2.1

4

首先对GEC2410B实验箱教学平台硬件电路进行分析,其次进行交叉编译环境的建立,了解如何建立交叉编译环境,学会获得和安装工具链的步骤;之后进行U-boot的分析与移植:理解bootloader和U-boot的概念以及有什么特点?u-boot的移植过程;最后进行Linux内核的移植,搭建嵌入式Linux开发环境再移植Linux-2.6到GEC2410B。

步骤如下

一、获得U-Boot源码 八、测试U-Boot

三、添加代码,从Nand Flash启

四、开发板的配置 五、交叉编译工具的安装 动 六、编译U-Boot 二、建立板级支持包 七、烧写U-Boot

5

第3章 系统硬件电路分析

图3.1 主电路

FLASH电路

6

1、关于GEC2410B实验箱

第一步:连接PC 机与实验箱, GEC2410B 实验箱接上电源,接上交叉串口线(串口线连接到实验箱的P1),连上USB 线(USB 线连接到实验箱的J14),连上交叉网线。

第二步:将光碟提供的DNW 工具拷贝到PC 机上,启动dnw.exe 串口通信工具。

第三步:点击DNW 菜单栏Configuration,设置DNW 的串口参数。 第四步:点击DNW 菜单栏Serial Port 下的Connect,连接串口。 第五步:打开实验箱上的电源,就可以在DNW 上看到启动信息。

2、GEC2410B 的BIOS 功能

GEC2410 实验箱所带的 BIOS 主要功能有文件下载 (USB 和串口)FLASH 烧写(NOR 和NAND)、启动存储在 FLASH 中的程序、设置启动参数(针对linux),设置 Wince 或 Linux的自启动的功能。

0 号功能:通过USB 从PC 机下载文件到实验箱的SDRAM 中,该功能要配合 DNW 这个程序使用;1 号功能:通过串口从PC 机下载文件到实验箱的SDRAM 中,该功能要配合 DNW 这个程序使用;2 号功能:执行 NAND FLASH 的烧写。3 号功能:主要用来从 NAND FLASH 启动 Linux 系统;4 号功能:可以擦除 NAND FLASH 分区。5 号功能:可以烧写 NOR FLASH(SST39VF160),此功能只在 NOR FLASH 启动后才可用,是用以更新 NOR FLASH 中的启动程序,如果用户自编了启动程序,可以在下载完后用此功能烧写 SST39VF160,注意:如果启动失败后,只能用 JTAG方式重新烧写SST39VF160 了。烧写 NOR FLASH 的时候,要保证核心板上的JP1 的跳线帽要取掉,即工作在NOR FLASH 启动模式。6 号功能:可设置启动参数,主要是对 linux 调试用。7 号功能:是设置自启动参数, 1:自启动 Linux ;2:自启动wince ;其他:不进入自启动模式。

7

第4章 软件功能设计

4.1 交叉编译环境的建立

* #mkdir /usr/local/arm

* #cp EABI_4.3.3_EmbedSky_20090812.tar.bz2 /usr/local/arm * #tar zxvf EABI_4.3.3_EmbedSky_20090812.tar.bz2 * 添加环境变量

* 在文件/etc/profile 文件最后添加:

#export PATH=/usr/local/arm/4.3.3/bin:$PATH

4.2 u-boot的分析与移植

4.2.1 u-boot的分析

Uboot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。UBoot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。

uboot的源代码的下载地址是:HTUhttp://sourceforge.net/projects/ubootUTH。 u-boot的源代码是通过GCC和Makefile组织编译的,顶层目录下的Makefile首先可以设置开发板的定义,然后递归调用子目录下的Makefile,最后把编译过的目标文件链接成u-boot映象。 4.2.2 u-boot 的环境

PC机安装的系统是:Red Hat Enterprise Linux 3 工具链2.95.3

4.2.3 u-boot的步骤

源码包u-boot-1.3.2.tar.bz2放在embed目文件夹下。将u-boot-1.3.2.tar.bz2拷贝在工作目录下,解压源码包:

8

[root@vm-dev root]# mkdir 2410-s [root@vm-dev 2410-s]#cd 2410-s [root@vm-dev 2410-s]# pwd /root/2410-s

[root@vm-dev 2410-s]# cp /mnt/hgfs/embed/u-boot-1.3.2.tar.bz2 ./ [root@vm-dev 2410-s]# tar jxvf u-boot-1.3.2.tar.bz2 [root@vm-dev 2410-s]# cd u-boot-1.3.2

二、建立板级支持包

在board目录下,每一块开发板都有一个对应的目录,因此我们需要为我们的开发板建立一个目录,名字叫做up2410,并创建相应的文件: [root@vm-dev u-boot-1.3.2]# cd board/ [root@vm-dev board]# mkdir up2410

[root@vm-dev board]# cp smdk2410/* up2410 [root@vm-dev board]# cd ../

上面的步骤中,我们把smdk2410目录下的所有文件都拷贝到了我们的up2410目录下,因为我们的开发板和smdk2410开发板的配置差不多。

每个开发板都有一个自己的配置文件,如smdk2410开发板的配置文件为include/configs/smdk2410.h,我们也需要为我们的开发板建立自己的配置文件。可以直接从smdk2410开发板的配置文件中修改而来。因此我们先把smdk2410的配置文件复制到我们开发板的配置文件当中:

[root@vm-dev u-boot-1.3.2]# cp include/configs/smdk2410.h include/configs/up2410.h 然后,修改Makefile,使得可以配置我们的开发板: [root@vm-dev u-boot-1.3.2]# vi Makefile 在Makefile中找到下面两行: smdk2400_config : unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0 紧接这这两行添加如下两行: up2410_config : unconfig

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

注意第二行开始部分的空白是按TAB键获得的!红色的部分显示了不同处! 这样,我们自己的板级支持包就建好了。

三、添加代码,支持从Nand Flash启动

由于我们的开发板上没有Nor Flash,只能从Nand Flash启动。而U-Boot默认不支持从Nand Flash启动,所以需要我们自己添加代码来实现从Nand Flash启动。

1、 修改start.S文件

位于cpu/arm920t/目录下的start.S文件是开发板上电后运行的第一段代码,需要在这个文件中添加内容,以支持从Nand Flash启动。

[root@vm-dev u-boot-1.3.2]# vi cpu/arm920t/start.S 首先,删掉start.S中的第181行和201行的下面内容:

9

#ifdef CONFIG_AT91RM9200

............................................................... #endif

如果有这两句,这两句之间的内容将不会被编译。而我们的开发板需要执行这些内容。然后,找到这一行:

#ifndef CONFIG_SKIP_RELOCATE_UBOOT 在紧接这这行的下面添加下面几行:

#ifdef CONFIG_S3C2410_NAND_BOOT bl copy_myself #else 再找到

ble copy_loop

在它的下面添加一行: #endif

做这些工作就是要完成一个简单的功能:如果我们定义了CONFIG_S3C2410_NAND_BOOT这个宏,那么就执行copy_myself这个子程序,否则就执行#else下面的程序。copy_myself这个子程序的功能就是把U-Boot自身的代码从Nand Flash拷贝到SDRAM中,需要我们自己实现,U-Boot自身并没有为我们实现。

我们把copy_myself也添加在start.S文件中。找到下面的一行:

_start_armboot: .word start_armboot 在这一行的下面添加如下的内容: /*

************************************************************************* *

* copy u-boot to ram *

************************************************************************* */

#ifdef CONFIG_S3C2410_NAND_BOOT copy_myself:

mov r10, lr @save return address to r10 ldr sp, DW_STACK_START mov fp, #0 bl NF_Init

ldr r0, =UBOOT_RAM_BASE mov r1, #0x0 mov r2, #0x30000 bl nand_read_whole tst r0, #0x0

beq ok_nand_read 1:

b 1b ok_nand_read:

mov r0, #0x00000000

ldr r1, =UBOOT_RAM_BASE mov r2, #0x400 go_next:

ldr r3, [r0], #4 ldr r4, [r1], #4 teq r3, r4 bne notmatch subs r2, r2, #4

10

beq done_nand_read bne go_next notmatch: 1:

b 1b

done_nand_read:

mov pc, r10 #endif

DW_STACK_START:

.word STACK_BASE+STACK_SIZE-4

上面是copy_myself的实现代码,添加完成以后,U-Boot启动时就会执行我们的这段代码,将U-Boot的内容从Flash中拷贝到SDRAM中。

这样,start.S这个文件就修改完成了,保存刚才的修改。

2、 添加nand.c文件

在copy_mysel这段程序中,我们调用了nand_read_whole子程序。这个程序是用C程序实现的,我们新建一个文件,board/up2410/nand.c,在这个文件中实现它:

#include #include #include #define TACLS 0 #define TWRPH0 3 #define TWRPH1 0

#define U32 unsigned int

extern unsigned long nand_probe(unsigned long physadr); static void NF_Reset(void) {

int i;

NF_nFCE_L(); NF_CMD(0xFF); for(i=0;i<10;i++); NF_WAITRB(); NF_nFCE_H(); }

void NF_Init(void) {

rNFCONF=(1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);

NF_Reset(); }

int nand_read_whole(unsigned char *buf, unsigned long start_addr, int size) {

int i, j;

if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK))

return 1;

NF_nFCE_L(); for(i=0; i<10; i++); i = start_addr;

while(i < start_addr + size) {

rNFCMD = 0;

11

rNFADDR = i & 0xff;

rNFADDR = (i >> 9) & 0xff; rNFADDR = (i >> 17) & 0xff; rNFADDR = (i >> 25) & 0xff; NF_WAITRB();

for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {

*buf = (rNFDATA & 0xff); buf++; } }

NF_nFCE_H(); return 0;

}

上面就是nand.c文件的全部内容。为了使编译的时候能把这个文件编译进去,需要修改相应的Makefile:

[root@vm-dev u-boot-1.3.2]# vi board/up2410/Makefile 找到这一行:

COBJS := smdk2410.o flash.o 把这行的内容改为下面这行: COBJS := smdk2410.o flash.o nand.o

即在行尾加上了nand.o,这样,编译的时候就会把nand.c编译进去,并进行链接。

3、 修改up2410.h

前面提到,up2410.h是开发板的配置文件。关于nand.c中用到的一些宏或者其他需要定义的,我们都放在up2410.h中。注意,这里只介绍和从Nand启动相关的配置,因为up2410.h中还有很多其他配置,将在后面介绍!

[root@vm-dev u-boot-1.3.2]# vi include/configs/up2410.h

光标移动到文件的末尾,在文件的最后一个#endif的前面添加如下内容: #define CONFIG_S3C2410_NAND_BOOT 1 #define STACK_BASE 0x33f00000 #define STACK_SIZE 0x8000

#define UBOOT_RAM_BASE 0x33f80000 #define CFG_NAND_BASE 0x4E000000 #define CFG_MAX_NAND_DEVICE 1 #define SECTORSIZE 512

#define NAND_SECTOR_SIZE SECTORSIZE

#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1) #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 WRITE_NAND_COMMAND(d, adr) do {rNFCMD = d;} while(0) #define WRITE_NAND_ADDRESS(d, adr) do {rNFADDR = d;} while(0) #define WRITE_NAND(d, adr) do {rNFDATA = d;} while(0) #define READ_NAND(adr) (rNFDATA)

#define NAND_WAIT_READY(nand) {while(!(rNFSTAT&(1<<0)));} #define NAND_DISABLE_CE(nand) {rNFCONF |= (1<<11);} #define NAND_ENABLE_CE(nand) {rNFCONF &= ~(1<<11);}

12

#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 rNFCONF (*(volatile unsigned int *)0x4e000000) #define rNFCMD (*(volatile unsigned char *)0x4e000004) #define rNFADDR (*(volatile unsigned char *)0x4e000008) #define rNFDATA (*(volatile unsigned char *)0x4e00000c) #define rNFSTAT (*(volatile unsigned int *)0x4e000010) #define rNFECC (*(volatile unsigned int *)0x4e000014) #define rNFECC0 (*(volatile unsigned char *)0x4e000014) #define rNFECC1 (*(volatile unsigned char *)0x4e000015) #define rNFECC2 (*(volatile unsigned char *)0x4e000016) #define NF_CMD(cmd) {rNFCMD=cmd;} #define NF_ADDR(addr) {rNFADDR=addr;} #define NF_nFCE_L() {rNFCONF&=~(1<<11);} #define NF_nFCE_H() {rNFCONF|=(1<<11);} #define NF_RSTECC() {rNFCONF|=(1<<12);} #define NF_RDDATA() (rNFDATA)

#define NF_WRDATA(data) {rNFDATA=data;}

#define NF_WAITRB() {while(!(rNFSTAT&(1<<0)));} 这样,关于从Nand启动的修改就做完了。保存文件。

三、开发板的配置

前面已经提到,up2410.h是我们的开发板的配置文件,许多重要的内容都需要在这个文件中进行配置。

1、添加命令

U-Boot中提供了丰富的命令,smdk2410开发板配置了一部分命令,我们为我们的开发板增加一些命令。在include/configs/up2410.h 找到下面的几行:

#define CONFIG_CMD_CACHE #define CONFIG_CMD_DATE #define CONFIG_CMD_ELF

在其下面添加下面几行:

#define CONFIG_CMD_REGINFO #define CONFIG_CMD_NAND #define CONFIG_CMD_PING #define CONFIG_CMD_DLF #define CONFIG_CMD_ENV #define CONFIG_CMD_NET

这样就添加了一些我们需要的命令。

2、 修改环境变量

13

环境变量是U-Boot运行时或者传递给内核的重要参数,需要正确设置。找到下面的一行: #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 10.0.0.110 #define CONFIG_SERVERIP 10.0.0.1

/*#define CONFIG_BOOTFILE \"elinos-lart\" */

/*#define CONFIG_BOOTCOMMAND \"tftp; bootm\" */ #if defined(CONFIG_CMD_KGDB)

注意上面的#if defined(CONFIG_CMD_KGDB)处,需要做的修改都在这之前进行修改。修改后的代码如下:

#define CONFIG_BOOTDELAY 3

#define CONFIG_BOOTARGS \"root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200\" #define CONFIG_ETHADDR 08:00:3e:26:0a:5b #define CONFIG_NETMASK 255.255.255.0 #define CONFIG_IPADDR 192.168.1.131 #define CONFIG_SERVERIP 192.168.1.132 #define CONFIG_BOOTFILE \"uImage\"

#define CONFIG_BOOTCOMMAND \"tftp; bootm\" #define CONFIG_CMDLINE_TAG 1

#define CONFIG_SETUP_MEMORY_TAGS 1 #define CONFIG_INITRD_TAG 1

14

#if defined(CONFIG_CMD_KGDB)

上面添加的环境变量在U-Boot启动时作为U-Boot的默认环境变量,如果不执行saveenv命令,则这些变量只存在于SDRAM中;执行saveenv命令后,这些便量会保存到Flash中,下次上电,在从Flash中把它读出来,作为环境变量使用。

3、 修改命令提示符

找到下面一行:

#define CFG_PROMPT \"SMDK2410 # \" /* Monitor Command Prompt */

修改为:

#define CFG_PROMPT \"[UP-2410-S #]\"

这样,U-Boot的命令提示符就是[UP-2410-S #]。这样做只是为了使用的时候知道我们使用的是UP-2410-S开发板上Bootloader,当然不改的话,也没有什么影响。

4、 修改默认下载地址

找到下面的一行:

#define CFG_LOAD_ADDR 0x33000000 /* default load address */

这个变量定义的是在使用串口或者网卡下载文件到SDRAM时,如果不指定下载地址,则下载到这个宏指定的默认地址。我们用下面的两行来替代: #define CFG_LOAD_ADDR 0x30008000

#define CFG_TFTP_LOAD_ADDR 0x30008000

5、 修改环境变量在Flash中的存储地址

找到下面的两行:

#define CFG_ENV_IS_IN_FLASH 1

#define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */ 上面的定义说明环境变量是存在Flash中。我们的板子上只有Nand Flash,因此环境变量只能存在Nand Flash中。因此,注释掉上面的两行,用下面的几行代替:

南京工业职业技术学院项目技术报告

#define CFG_ENV_IS_IN_NAND 1 #define CFG_ENV_SIZE 0x4000

#define CFG_ENV_OFFSET (0x80000-0x4000)

表示环境变量存储在Nand Flash中,大小为16KB,起始地址是0.5M往下的16KB地址处。这样的话,U-Boot占用的Flash地址是前0.5M,对U-Boot来说,已经足够了。

到这里,配置文件的修改就完成了。

四、交叉编译工具的安装

up2410的编译所用工具链是4.4.3,EABI_4.3.3_EmbedSky_20090812.tar.bz2是提供给你的源码包,依据安装说明,将源码包进行安装。

五、编译U-Boot

首先运行如下命令配置U-Boot:

[root@vm-dev u-boot-1.3.2]# make up2410_config Configuring for up2410 board... [root@vm-dev u-boot-1.3.2]# 然后运行make命令编译:

[root@vm-dev u-boot-1.3.2]# make

编译完成后,会在U-Boot的源代码目录下生成u-boot.bin文件。这个文件就是我们需要的二进制文件。

4.2.4 烧写u-boot.bin到开发板的nand flash

连接好PC机与开发板,连接串口线,usb线,电源;打开dnw串口通讯软件,启动开发板

16

南京工业职业技术学院项目技术报告

4.4.3交叉工具链介绍

交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。注意这里的平台,实际上包含两个概念:体系结构

(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux 平台实际上是Intel x86 体系结构和Linux for x86 操作系统的统称;而x86 WinNT 平台实际上是Intel x86 体系结构和Windows NT for x86 操作系统的简称。就本书所涉及到的目标硬件S3C2410 而言,之所以使用交叉编译是因为在该硬件上无法安装我们所需的编译器,只好借助于宿主机,在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。

在这里介绍在嵌入式系统开发中用得最多的GNU 开发工具。 GNU交叉工具链,包括C编译器GCC,C++编译器G++,汇编器AS,链

17

南京工业职业技术学院项目技术报告

接器LD,二进制转换工具(OBJCOPY,OBJDUMP),调试工具(GDB,GDBSERVER,KGDB) 和基于不同硬件平台的开发库。在GNU GCC支持下用户可以使用流行的C/C++语言开发应用程序,满足生成高效率运行代码、易掌握的编程语言的用户需求。

运行于Linux 操作系统下的自由软件GNU gcc 编译器,不仅可以编译Linux 操作系统下运行的应用程序,还可以编译Linux 内核本身,甚至可以作交叉编译,编译运行于其它CPU上的程序。在这里我们用的是arm-linux-工具链。

GCC交叉工具链的版本匹配是个大麻烦,2.95.x版本的GCC工具链曾经统治过linux-2.4内核时代,它表现得极为稳定。现在GCC-2.95.3版本已经过时了,linux-2.6内核要求更高的工具链版本支持。Linux-2.6内核最后使用gcc-3.3以上版本。

第5章 软件的下载与调试

连接PC 机与实验箱, GEC2410B 实验箱接上电源,接上交叉串口线(串口线连接到实验箱的P1),连上交叉网线;将光碟提供的DNW 工具拷贝到PC 机上,启动dnw.exe 串口通信工具,如下:

18

南京工业职业技术学院项目技术报告

点击DNW 菜单栏Configuration,设置DNW 的串口参数,修改如下:

19

南京工业职业技术学院项目技术报告

点击DNW 菜单栏Serial Part 下的Connect,连接串口,如下图:

打开实验箱上的电源,就可以在DNW 上看到启动信息:若无反应,按复位键。

20

南京工业职业技术学院项目技术报告

输入1,进行串口连接;

5.2软件的调试

21

南京工业职业技术学院项目技术报告

将bin文件导入DNW中进行烧写;

按下n,不运行;

22

南京工业职业技术学院项目技术报告

输入“0”,选择烧写的分区为0x0至0x30000的空间,然后输入“y”,确认烧写;

将跳线插上,然后按Y即可。

23

南京工业职业技术学院项目技术报告

结 论

在本次实训过程中,我们分组讨论、硬件电路的分析、软件的开发、系统测试的验证等等。通过一个典型的基于Linux的ARM嵌入式系统的方案的设计、硬件平台的搭建、软件系统的建立、产品的调试与项目完成后的评估总结报告的撰写等完成工作过程的训练,培养学生的综合职业能力,并且我们从中获得了很大的收获,因此在本次实验中我们获得圆满成功。

24

南京工业职业技术学院项目技术报告

致 谢

本次实训快结束,通过这次的实训,让我们加深了对嵌入式Linux系统的了解,并且让我们学会了u-boot的分析和移植等等,培养了我们自己编写、调试、分析程序的能力,培养了我们自己独立解决问题、查找相应资料的能力,培养了同学之间相互帮助、相互交流,相互合作的团队精神。

我还要感谢我们组的组员,每当有人遇到问题时,都会一起讨论、解决问题以及一起去查找程序中的错误,并且一起去攻克实训中复杂程序,这更让我懂得了团队合作的重要性。 最后我还要感谢老师在这三个星期内对我们的指导和耐心的讲解,每当碰到的问题组员之间不能解决时,都会请教老师,老师每次都会细心的解说,老师也会指出所编程序的不足和相应需要改进的地方,使得我们的程序得到了更好的完善。

参考文献

1. 熊茂华、杨震伦.ARM9嵌入式系统设计与开发应用.北京:

25

南京工业职业技术学院项目技术报告

清华大学出版社,2008.1

2. 杜春雷 .ARM体系结构与编程.北京:清华大学出版社,2003 3. [美]Furber S著.田泽等译.ARM SoC体系结构.北京:北京

航空航天大学出版社,2002

4. 王田苗等.嵌入式设计及应用与实例开发—基于ARM微处理

器与Uc/OS-H实时操作系统.北京:清华大学出版社,2008 5. 孙琼.嵌入式LINUX应用程序开发详解.北京:人民邮电出版

社,2006

26

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务