嵌入式系统实验报(华中科技大学).doc
文本预览下载声明
课 程 实 验 报 告
实验名称:嵌入式系统实验
专业班级:计算机科学与技术x班
学 号: Ux
姓 名: x
合 作 者: x
实验时间: xxxx年xx月xx日
计算机科学与技术学院
试验一:bootloader (ads、引导)
一、实验任务
1、熟悉ADS 1.2开发工具
创建、编译、下载、调试工程
2、串口通讯
串口控制器初始化、收/发数据
3、配置主机端的nfs服务器
配置主机端的nfs服务器,以连接linux核心
4、下载并运行linux核心
使用自己的串口程序下载并运行linux核心
二、实验内容
编写串口接收数据函数
编写串口发送数据函数
学习ads、jtag调试、flash烧写
打印菜单,等待用户输入
下载并运行linux核心
配置主机的nfs服务器,与linux核心连接
三、实验步骤
1.编写串口接收数据函数
编写串口发送数据函数
修改bootloader:菜单、串口收发、命令行;
接收串口数据并做相应处理:
while(1)
{
打印菜单并等待用户输入;
switch(ch) //根据用户输入做相应处理
{
case 1:
imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);
if(imgsize==0) //下载出错;
else //下载成功;
break;
case 3:
nand_read((unsigned char *)KERNEL_BASE, 0 4*1024*1024);
case 2:
BootKernel(); //这里是不会返回的,否则出错;
break;
default:
break;
}
}
Bootloader的main()函数打印菜单:
int main(void)
{
ARMTargetInit(); //目标板初始化;
//接收用户命令,传递linux核心;
Uart_puts(Menu:\n\r);
Uart_puts(1.Load kernel via Xmodem;\n\r);
Uart_puts(2.Boot linux; \n\r);
Uart_puts(3.Load kernel from flash and boot; \n\r);
Uart_puts(Make your choice.\n\r);
do{
ch=Uart_getc();
}while(ch!=1 ch!=2 ch!=3);
return 0;
}
串口读写:
void Uart_putc(char c)
{
while(!SERIAL_WRITE_READY());
((UTXH0) = (c));
}
unsigned char Uart_getc( )
{
while(!SERIAL_CHAR_READY());
return URXH0;
}
2.使用ads1.2编译bootloader;
3.使用uarmjtag下载、调试bootloader;
4.使用axd查看变量、内存,单步跟踪;
5.配置超级终端,与bootloader通讯;
6.配置nfs;
编辑/etc/export文件:
/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)
/home/arm_os/filesystem/rootfs 主机ip(rw,sync)
启动nfs服务器:
/etc/init.d/nfs restart
测试nfs服务器是否正常运行:
mount 主机ip:/home/arm_os/filesystem/rootfs /mnt
7.以root用户启动cutecom,将cutecom配置改为115200 bps,8位,1位停止位,无校验,xmodem,no line end;
8.使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;
9.启动Linux核心运行,察看结果;
10.linux核心能够运行到加载root步骤,说明bootloader正常运行;
11.将bootloader烧写到flash中,重启目标板电
显示全部