第二次作业U201410699赵宏伟

1、在github上,Fork例程项目(https://github.com/cbhust/STM32F429_Discovery_FreeRTOS_9.git) 到自己的个人账号。

2、clone项目到本地电脑的Ubuntu虚拟机中(虚拟机环境在第一次作业中已搭建)。

开发环境搭建同第一次:

3、按照/Projects/Demo1/README.md中的提示编译Demo1例程并通过Qemu运行例程。

(1)创建work文件到Home目录并下载文件到work文件:

mkdir work

cd work

git clone https://github.com/cbhust/STM32F429_Discovery_FreeRTOS_9.git

(2)到网页 https://github.com/gnu-mcu-eclipse/qemu/releases/tag/gae-2.8.0-20161227 下载二进制文件 gnuarmeclipse-qemu-debian64-2.8.0-201612271623-dev.tgz到~/work目录;
在工作目录解压缩文件,并把路径添加到$PATH变量中

cd ~/work

tar xvf gnuarmeclipse-qemu-debian64-2.8.0-201612271623-dev.tgz

chmod -R -w ./qemu

export PATH=~/work/qemu/2.8.0-201612271623-dev/bin/:$PATH

(3)测试qemu能否正常运行,如正常则会显示版本信息为2.8.0。

qemu-system-gnuarmeclipse --version

(4)在Demo1目录下运行make,生成hello_rtos.elf文件

cd ~/work/STM32F429_Discovery_FreeRTOS_9/Projects/Demo1/Hello_RTOS/

make

(5)在Demo1目录下运行脚本文件,在弹出的GUI中看到程序执行的效果。

./qemu.sh

(6)安装gdb-arm-none-eabi工具

sudo apt-get install gdb-arm-none-eabi

(7)在Demo1目录下运行qemu_gdb脚本文件,该文件中添加了--gdb tcp::1234 -S

./qemu_gdb.sh

    qemu启动后等待来自gdb的调试指令,打开另外一个终端窗口,运行

arm-none-eabi-gdb

    在gdb界面内运行:

(gdb)target remote localhost:1234
(gdb)continue

    可以看到qemu开始执行程序,GUI界面上可以看到程序执行效果:

4、在Demo1的框架基础上完成自己的本次编程作业
具体要求:
创建三个任务:Sender_Task,Receiver_Task, Monitor_Task
Sender_Task的任务执行周期为2ms,Receiver_Task的任务执行周期为1000ms, Monitor_Task的任务执行周期为10000ms。
Sender_Task在每个执行周期向Receiver_Task发送一个32位无符号整数,第一次发送1,然后依次发送2,3,4......,发送完10000后再从1开始发送。同时对发送的数据进行计算 累加计算并保存当前累加结果。
Receiver_Task对接收到的数据进行和Sender_Task同样的累加计算并保存当前累加结果。
Monitor_Task在每个执行周期检查Sender_Task发送的每个数据是否都被Receiver_Task正确的接收和处理,请自行设计一种检查机制并实现。
可利用STM32F429I Discovery开发板的相关硬件(LED/LCD/串口)来输出相关状态信息。
使用FreeRTOS的任务间通信和同步API完成上述功能。




也不知道为啥,结果好像不对,我已经崩溃了。。。。。

5、Github链接:https://github.com/2106470959/homework2

我在Github上直接在仓库上Upload上传main.c文件,如图可见:

posted on 2017-09-29 00:07  五班赵宏伟  阅读(255)  评论(1编辑  收藏  举报