本资源包含华中科技大学嵌入式课程的实验代码与详细报告,涵盖多种硬件平台和编程技术,适合学习参考。
实验一的目的是编写一个程序来展示多进程并发执行、进程软中断以及管道通信的功能。在这个实验中,父进程首先通过调用`pipe()`系统函数创建一个管道,然后使用`fork()`系统调用来生成两个子进程:子进程1和子进程2。具体来说:
- 子进程1每隔一秒向管道发送一条信息:I send you x times.(其中x的初始值为1,并且每次发送后加一)。
- 子进程2从管道中读取数据并将其显示在屏幕上。
此外,父进程中使用`signal()`系统调用来捕获键盘中断信号(即按下Ctrl+C键)。当检测到该中断时,父进程通过`kill()`函数向两个子进程发送终止信号。收到此信号后,每个子进程会输出相应的信息然后结束运行:
- 子进程1: Child Process 1 is Killed by Parent!
- 子进程2: Child Process 2 is Killed by Parent!
最后,在所有子进程都已停止之后,父进程释放管道资源并打印Parent Process is Killed!后终止。
实验二要求设计一个程序以展示Linux多线程和信号灯机制的使用。该程序包括两个线程:
- 线程1负责计算从1到100的所有整数之和。
- 线程2则负责将累积的结果打印出来,即输出每次加一后的总和。
实验三的目标是利用多个共享内存区域(每个都有有限容量)构成的环形缓冲区来实现两个进程之间的数据复制。具体操作是从源文件中读取内容并将其写入目标文件,以此模拟誊抄过程。
在实验四里:
- 第一步要求编译和下载Blink程序。
- 接下来,在每次定时器事件触发时点亮LED的同时通过串口输出信息来增强该程序的功能。
- 最后一个任务是修改BLink代码以使用单一的计时器,并用三个LED灯显示0到7之间的二进制数(亮为1,灭为0),同时在终端上显示出当前数值。