[CAR] 入职学习任务

一 前言

6月15号,刚刚办完离职手续,16号就举家搬迁,从上海搬到杭州,18号端午节都没有好好过,忙着整理新家,19号就开始上班了,好在新公司给了两个月的适应期,在这期间,仅仅布置学习任务,还是很人性化的。

前期驱动侧学习任务如下:

  1. 编写一个基本字符设备,验证字符设备常用接口:open/close/read/write/ioctl
  2. 在上述字符设备中添加内存申请释放功能,并将内存与文件系统中的某个文件对应,文件(内存)大小为4MB。
  3. 通过read/write接口实现对内存区域的读写操作,编写用户态的测试程序。
  4. 通过proc接口实现对内存区域的读写操作。
  5. 在用户态使用多线程对驱动申请的内存进行并发访问(写操作),在驱动中采用合适的互斥机制,避免多线程写数据错乱。
  6. 在驱动中添加阻塞读操作,当写进程向设备写入数据后,读进程才可以读取数据,否则读进程阻塞。
  7. 在驱动中添加poll机制,支持用户态读操作轮询,当写进程向设备写入数据后,读进程select成功,可以读取数据。

需要编写驱动和测试程序,并进行总结。

二 搭建开发环境

这里我使用的是 mini2440 开发板来完成上述任务的,搭建 mini2440 开发环境请参考: 搭建韦东山二期驱动视频学习环境

也可以使用 QEMU 虚拟一台开发板搭建验证环境,搭建 QEMU 虚拟开发板的话,推荐使用宋宝华老师做好的虚拟机,此虚拟机创建好了 vexpress cortex-a9 双核开发板,安装好就可以直接用了。搭建宋 vespress 开发环境请参考: 搭建 Vexpress Cortex-A9 虚拟开发板环境

三 任务实现

前言中提到的任务目前全部都已经实现,源码开源在 GitHub,仓库路径为 https://github.com/mini2440/hikvision.training

每个任务的说明,请查看仓库 readme 文档。

坚持原创技术分享,您的支持将鼓励我继续创作!