合肥工业大学(HFUT)嵌入式系统原理实验一

零.具体代码和文档见文末链接

一.修改前代码要求

       本次实验使用CentOs操作系统环境,安装ARM-Linux的开发库及编译 器。学习在Linux下的编程和编译过程,即创建一个新目录leds_s,使用编辑器 建立start.S和Makefile文件,并使用汇编语言编写LED控制程序。编译程序, 并下载文件到目标开发板上运行。

二.实验步骤

二、实验内容(包括实验步骤和代码)

本次实验使用CentOs操作系统环境,安装ARM-Linux的开发库及编译 器。学习在Linux下的编程和编译过程,即创建一个新目录leds_s,使用编辑器 建立start.S和Makefile文件,并使用汇编语言编写LED控制程序。编译程序, 并下载文件到目标开发板上运行。

实验步骤:

1、建立工作目录leds(若系统中已建立该目录,可跳过本步骤)。

点击【虚拟机】菜单中的【设置】,选择【选项】中的“共享文件夹”, 添加Windows系统中的桌面路径为共享文件夹。在Windows系统的桌面上,右键 复制leds文件夹,然后进入虚拟机当前用户的Home目录,使用右键粘贴,将文 件夹从windows系统复制到虚拟机的系统中。

2、编写程序源代码

在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit 9 等,建议在实验中使用vim(需要学习vim的操作方法,请参考相关书籍中的关 于vim的操作指南)。 ① start.S的汇编源程序如下:

② Makefile文件如下:

在Makefile所在目录下执行make命令时,系统会执行如下操作: l 执行arm-Linux-gcc-o $@ $< -c命令,将当前目录下存在的汇编文件和 C文件编译成.o文件; 10 l 执行arm-Linux-ld -Ttext 0x50000000 -o led.elf $^,将所有.o文件 成 elf , -Ttext 0x50000000 是 0x50000000, 即程序只有位于该地址上才能正常运行; l 执行arm-Linux-objcopy -O binary led.elf led.bin,将elf文件抽取 为可在开发板上运行的bin文件; l 执行arm-Linux-objdump -D led.elf > led_elf.dis,将elf文件反汇 编后保存在dis文件中,调试程序时可能会用到。

 3、编译及下载运行程序

 ① 编译代码:确保当前用户为root用户(可使用su root命令切换到root用户)的条件下,在Fedora的终端中执行如下命令: # cd leds # make 执行 make 后会生成 led.bin文件。

 ② 下载(烧写)和运行程序:在 windows系统中,以管理员权限使用 SD-Flasher程序,将引导程序 Superboot-6410.bin烧入SD卡。成功烧写后的结果如下图所示:

在SD卡中建立一个images文件夹,并把配置文件FriendlyARM.ini复制到该 11 文件夹中。双击打开SD卡中的该配置文件,在任意位置加入以下内容:USB-Mode = yes (注意字符的大小写)。如下图所示: 将烧写完成的SD卡,插入Tiny6410开发板的SD卡槽,并将开发板S2拨动开 关置于SDBOOT位置,然后打开开发板电源,开发板将进入USB下载模式,LCD显 示屏上显示“USB Mode:Waiting…”。此时用MiniUSB线连接开发板与PC机, LCD上会显示“USB Mode:Connected”。 在windows系统中,以管理员身份运行MiniTools软件,打开如下软件界面:

 确认界面下方显示绿色图标,表明MiniTools已通过MiniUSB线与开发板成 12 功连接。接着,选择Install to NAND Flash,表示将裸机程序烧入NAND Flash,但不需要运行。设置好下载地址 “ RAM Address(Download/Loading) =0x50000000 ” ,同时勾选 Superboot,并选择烧写时需要的引导程序 Superboot-6410.bin和要烧写的裸机程序。最后,点击【Start flashing】按钮,执行选择的某一裸机程序(bin文件)烧写。成功后显示如下信息:

 关闭开发板电源,将S2拨动开关置于NAND位置,然后重新开启开发板电源, 则开发板运行刚刚烧入的裸机程序。

核心代码:

 三.实验现象

修改前的实验结果:

  LED灯全亮:                      LED灯全灭:

       

四.修改后代码要求和代码

在延时不变的条件下,将原程序中“四个LED全亮,然后全灭”的显示状态,修改为循环跑马灯效果,即“LED1亮→LED2亮→LED3亮→LED4亮→LED3亮→LED2亮→LED1亮→LED2亮

代码(忘了没保存,现只有代码图片):

凑活看

五.修改后实验现象

LED1灯亮:              LED2灯全亮:  

    

 LED 3灯亮:               LED 4灯亮:

     

六.代码仓库:

GitHub - 1StephenCurry1/Principle-and-Application-ofEmbeddedSystem: 合肥工业大学嵌入式系统原理实验代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值