ImageVerifierCode 换一换
格式:DOCX , 页数:59 ,大小:6.41MB ,
资源ID:20829605      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20829605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(川师arm linux系统实验报告Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

川师arm linux系统实验报告Word格式.docx

1、实验名称学时必做选做学分数实验类型内容提要基本操作验证综合设计4四Bootloader跟踪打印实验熟悉Linux嵌入式系统bootloader实现原理。五Bootloader增加命令选项实验熟悉根据实际需要修改bootloader的基本步骤6六内核编译实验2熟悉Linux嵌入式系统内核移植过程。7七文件系统制作实验熟悉Linux嵌入式系统根文件制作。8八驱动程序加载实验熟悉驱动程序动态、静态的加载过程四、实验内容安排:实验四 Bootloader跟踪打印实验(验证型实验 4学时)1. 目的要求:(1) 熟练掌握Bootloader的启动过程。(2) 熟练掌握Bootloader的基本调试方法。

2、(3) 熟练掌握Bootloader的编译过程。2. 实验内容(1) Blob第1阶段分析 打开Boot-XSBase270srcstart.S,该源码文件完成系统的Blob 程序的第1阶段的编程及程序调用实现过程。(主要包括:GPIO的初始化调用bl define_gpio;系统时钟信号使能调用bl clock_enable;SDRAM内存设置调用bl setup_memory、Blob 自拷贝、堆栈的设置 ldr sp, stack_point-4以及跳转到Blob 第二阶段 ldr pc, main)【图4-1】 打开Boot-XSBase270srcfixgpio.S 文件,找到配置G

3、PIO的define_gpio函数,该函数主要实现对系统微处理器的GPIO的初始化过程。其中涉及GPIO的输入/输出方向设置寄存器:GPDRn、置位和清零寄存器(GPSRn、GPCRn)以及功能配置寄存器GPFRnL、GPFRnH等。【图4-2】 打开Boot-XSBase270src memsetup.S文件,找到setup_memory函数,该函数主要对系统外部的DRAM、SRAM(FLASH)、PC Card接口等存储设备所需参数进行配置,其中包括:MDCNFG、MDREFR、MSCn等寄存器的配置。【图4-3】 (2) Blob 第2阶段分析 打开Boot-XSBase270srcma

4、in.c文件,找到int main(void)函数,该函数完成系统的Blob 程序的第2阶段的硬件初始化和菜单显示等程序调用实现过程(主要包括:终端显示串口初始化uart_init();系统定时器time_init();存储分配映射配置config_init();Flash内存器操作配置初始化iflash_init();以及网络芯片初始化eth_init();等本阶段硬件初始化过程调用;提示延时、菜单显示调用)【图4-4】 main程序初始化【图4-5】 main程序延迟 【图4-6】 Bootloader打印菜单函数 打开Boot-XSBase270srcserial.c文件,分别找到uar

5、t_init(void)、int uart_putc(int ch)和int uart_getc(void)三个串口操作基本函数。主要完成串口初始化与从串口获取和输出字符等操作。实现对PXA270的串口相关寄存器进行配置。其他与串口相关的函数都直接或间接调用这三个函数。【图4-7】 串口初始化函数【图4-8】 串口输入、输出函数 打开Boot-XSBase270srcPartition.c文件,找到init_map(void)和find_map(const char* name)函数,这两个函数主要完成对存储分配映射进行配置和查找某个指定类型的内存映射参数。其中parts结构体数组定义了整个系

6、统的SRAM、SDRAM等内存映射的相关参数。【图4-9】 DRAMSRAM地址映像函数【图4-10】 内存地址分配映射结构体数值 打开Boot-XSBase270srcFlash.c文件,该文件中函数主要完成对flash的编程、擦除、加/解锁等操作。其中iflash_init(void)函数主要实现查询平台的flash存储芯片的相关信息,flash操作的命令可参考flash芯片的资料文档。【图4-11】 flash初始化函数 打开Boot-XSBase270src lan91c111.c文件,该文件中函数主要实现lan91c111网络芯片的底层操作配置操作,其中lan91c111_init(

7、void)函数由main.c文件中的eth_init()函数间接调用。具体寄存器操作方法参考lan91c111的资料文档。【图4-12】 Ethernet初始化函数 打开Boot-XSBase270src Network.c文件,该文件中的函数主要完成网络传输相关协议的封装(如: set_udp_header、set_ip_header、set_ether_header、set_arp_heade、set_icmp_header等)、网络数据包的解压(udp_recv_packet、ip_recv_packet、eth_recv_packet、arp_recv_packet、icmp_recv

8、_packet)以及网络传输请求数据包的发送(send_arp_request_packet、send_icmp_echo_request等)等操作。【图4-13】 网络传输函数 打开Boot-XSBase270src tftp.c文件,该文件中的函数主要完成文件TFTP传输相关操作。【图4-14】 tftp命令结构体定义(3) Blob 跟踪调试信息输出 打开Boot-XSBase270srcmain.c文件,屏蔽config_init函数后面的printf(033H033Jn);语句,同时将该语句添加到uart_init函数后,并在uart_init函数后面添加printf(UART in

9、it overn语句。【图4-15】 跟踪UART 打开Boot-XSBase270src Lan91c111.c文件,在lan91c111_init()函数返回前添加test_get_reg();函数,测试lan91c111网卡芯片的相关寄存器。【图4-16】 测试网卡寄存器 打开Boot-XSBase270src Time.c文件,分别在time_init()函数中添加如下调试输出信息。printf(time_init+nudelay : msecond_boundary : %d 0x%08lxn, msecond_boundary, msecond_boundary);time_ini

10、t-n【图4-17】 跟踪时间初始化 打开Boot-XSBase270src Partition.c文件,在init_map函数中增加如下调试信息。Memory map name is %sn,part-name);Memory map SRAM Base Address is 0x%08xnsramb);Memory map SRAM SIZE is 0x%08xnsrams);Memory map DRAM Base Address is 0x%08xndramb);Memory map DRAM Size is 0x%08xndrams);Memory map Max Size is 0

11、x%08xnmaxs);【图4-18】 跟踪DRAM/SRAM映射关系 打开Boot-XSBase270src Flash.c文件,去掉/#define detail(fmt, args.) printf(fmt, #args)宏定义的屏蔽符“/”,使该宏定义功能有效。【图4-19】 打印flash寄存器 保存所有修改后的文件在Boot-XSBase270目录下利用make命令对修改后的源码进行编译;编译后将生成boot文件。make cleanmake【图4-20】 Bootloader编译 将成功编译后的boot文件拷贝到JFlash_MM文件夹中,连接JTAG,开启电源,并在该目录下执行

12、下载烧录命令start.bat。.【图4-21】 Bootloader烧写 重新启动开发板,在延时时间内(3秒)按空格键,Blob 显示修改后调试信息。【图4-22】 存储器映射关系打印【图4-23】 Flash寄存器信息打印【图4-24】 Bootloader菜单打印3. 主要仪器设备及软件:(1) PC(2) XSBase270 ARM 实验开发平台一套实验五 Bootloader新增命令项实验(1) 熟悉Bootloader。(2) 深入理解Bootloader的源代码。(3) 熟练掌握Bootloader新增命令项的基本步骤。(1) 打开Boot-XSBase270srcmenu.c文

13、件,在DisplayMenu函数中增加: d LED Testn使Bootloader程序在启动时提供显示LED灯测试选项。【图5-1】 增加Bootloader菜单项(2) 打开Boot-XSBase270srccommand.c文件,在该文件中增加测试LED灯命令项对象extern struct command_t cmd_led;,并将命令项对象添加到命令列表结构体static struct command_t *cmdlist中。【图5-2】 增加命令结构体(3) 打开Boot-XSBase270srcmain.c文件,在等待选项输入的地方增加对小写英文字符”d”输入条件的选择。【图5

14、-3】 增加命令菜单字符项(4) 打开Boot-XSBase270srcmain.c文件,在选项判断的case语句中增加小写英文字符”d”输入条件的选择判断。 case 100: command_run(ledtest break;【图5-4】 增加命令菜单项响应(5) 在Boot-XSBase270src文件夹中新增一个Testled.c文件,文件内容如下,主要完成对Led测试命令项的操作,该命令实现对开发板中的8个LED二极管循环向右移动,直到用户选择小写英文字符“f”后退出。#include time.hcommand.h#define LED_CS4 (*(volatile unsig

15、ned char *)(0x10500000)static bool do_led(int argc, char *argv);static void led_usage(void);struct command_t cmd_led = .name = , .run = do_led, .usage = led_usage;static bool do_led(int argc, char *argv) int LED_Value = 0x01; int iNum = 0; printf( Led Shift Command Test !n Please press f key exit !

16、while(1) LED_CS4 = LED_Value; mdelay(1000); iNum = getc(); if(iNum = 102) LED_Value = LED_Value 0x80) LED_Value = 0x01; LED_CS4 = 0xFF; return true;static void led_usage(void) usage_format(testled, Testing the LEDS return;【图5-5】 Testled.c(6) 打开Boot-XSBase270srcMakefile文件,在该文件中的objfiles变量中增加:objfiles

17、 +=testled.o,实现对testled.c的编译和链接。【图5-6】 修改Makefile(7) 在Boot-XSBase270目录下利用make命令对修改后的源码进行编译;【图5-7】 编译Bootloader(8) 将成功编译后的boot文件拷贝到JFlash_MM文件夹中,连接JTAG,开启电源,并在该目录下执行下载烧录命令start.bat。【图5-8】 烧写Bootloader(9) 重新启动开发板,在延时时间内(3秒)按空格键,bootloader显示修改后的启动菜单。【图5-9】 命令菜单添加效果图(10) 输入小写英文字母“d”,查看开发平台上8个LED发光二极管的运行

18、情况和boot菜单的变化。【图5-10】 命令菜单运行效果图(11) 输入小写英文字母“f”,查看开发平台上8个LED发光二极管的运行情况和boot菜单的变化。实验六、Linux-2.6.22.10移植实验1. 实验目的 掌握Linux 源码结构。 掌握Linux系统移植方法和步骤。2. 实验步骤第1步、 从http:/www.kernel.org/pub/linux/kernel/v2.6下载linux-2.6.22.10.tar.bz2压缩文件(或光盘中提供);第2步、 将linux-2.6.22.10.tar.bz2压缩文件复制到Linux工作目录(如root/work目录下);第3步、

19、 在Linux下利用tar jxvf linux-2.6.22.10.tar.bz2命令解压linux-2.6.22.10.tar.bz2压缩文件。第4步、 进入解压后的linux-2.6.22.10目录下,利用vi编辑工具修改linux-2.6.22.10目录下的顶层Makefile文件。修改linux-2.6.22.10目录下的顶层Makefile文件,设置编译linux操作系统的CPU体系架构变量ARCH 和所使用的交叉编译工具链变量CROSS_COMPILE(注:实验使用arm-linux交叉编译工具链4.4.3版本,可从http:/ftp.snapgear.org/pub/snapg

20、ear/tools/arm-linux/下载arm-linux-tools-20070808.tar.gz压缩文件)。ARCH ?= armCROSS_COMPILE ?=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-将linux-2.6.22.10目录下的arch/arm/configs/mainstone_defconfig文件复制为xsbase270_defconfig文件。第5步、 将实验源码目录下的linux-2.6.22.10_patcharcharmmach-pxa目录下的xsbase270.c文件复制到linux-2.6.22.

21、10archarmmach-pxa目录中(注:xsbase270.c从该目录下的mainstone.c修改而来)。第6步、 修改linux-2.6.22.10archarmmach-pxa目录下的Makefile文件,增加编译xsbase270.c的编译选项,即:obj-$ (CONGIG_MACH_XSBASE270 ) += xsbase270.o。obj-$(CONFIG_MACH_XSBASE270) += xsbase270.o rtc4513.o第7步、 修改linux-2.6.22.10archarmmach-pxa目录下的Kconfig文件,增加在裁剪内核时支持对EELiod/

22、Liod平台的选择第8步、 将实验源码目录下的linux-2.6.22.10_patchdriversmtdmaps目录下的xsbase270-flash.c文件复制到linux-2.6.22.10driversmtdmaps目录中(注:xsbase270-flash.c从该目录下的mainstone-flash.c修改而来)。修改linux-2.6.22.10driversmtdmaps目录下的Makefile文件,增加编译xsbase270-flash.c的编译选项,即:obj-$ (CONGIG_MTD_XSBASE270 ) += xsbase270-flash.o。第9步、 修改li

23、nux-2.6.22.10driversmtdmaps目录下的Kconfig文件,增加在裁剪内核时支持对EELiod/Liod平台flash驱动的选择第10步、 将实验源码目录下的linux-2.6.22.10_patchincludeasm-armarch-pxa目录下的xsbase270.h文件复制到linux-2.6.22.10includeasm-armarch-pxa目录中。第11步、 修改linux-2.6.22.10includeasm-armarch-pxa目录中irqs.h文件,在文件最后增加EELiod/Liod平台相关中断定义,内容如下。#define XSBEDR_US

24、BWAKE_IRQ IRQ_GPIO(1)#define XSBEDR_USB2_IRQ IRQ_GPIO(9)#define XSBEDR_ETH_IRQ IRQ_GPIO(10)#define XSBEDR_CF_DETECT_IRQ IRQ_GPIO(12)#define XSBEDR_AC97_IRQ IRQ_GPIO(13)#define XSBEDR_CF_IRQ IRQ_GPIO(22)#define XSBDVK_IRQ(x) (IRQ_BOARD_START + (x)#define XSBDVK_ETH_IRQ IRQ_GPIO(10)#define XSBDVK_2700

25、G_IRQ IRQ_GPIO(12)#define XSBDVK_AC97_IRQ IRQ_GPIO(13)#define XSBDVK_CF_IRQ IRQ_GPIO(22)#define XSBDVK_MMC_IN_IRQ XSBDVK_IRQ(0)#define XSBDVK_MMC_OUT_IRQ XSBDVK_IRQ(1)#define XSBDVK_SIM_IN_IRQ XSBDVK_IRQ(2)#define XSBDVK_SIM_OUT_IRQ XSBDVK_IRQ(3)#define XSBDVK_USB_IN_IRQ XSBDVK_IRQ(4)#define XSBDVK_

26、USB_OUT_IRQ XSBDVK_IRQ(5)#define XSBDVK_CF_IN_IRQ XSBDVK_IRQ(6)#define XSBDVK_CF_OUT_IRQ XSBDVK_IRQ(7)#define XSBDVK_SW1_IRQ XSBDVK_IRQ(8)#define XSBDVK_SW2_IRQ XSBDVK_IRQ(9)#define XSBDVK_SW3_IRQ XSBDVK_IRQ(10)#define XSBDVK_SW4_1_IRQ XSBDVK_IRQ(11)#define XSBDVK_SW4_2_IRQ XSBDVK_IRQ(12)#define XSBDVK_SW4_3_IRQ XSBDVK_IRQ(13)第12步、 在linux-2.6.22.10目录下执行make xsbase270_defconfig。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1