零.具体代码和文档见文末链接
一.修改前代码要求
本次实验使用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: 合肥工业大学嵌入式系统原理实验代码