大总结:从定制uboot到双系统Kernel启动文件系统--Apple的学习笔记

前言

我想做属于自己的视觉相关产品,从底层驱动到应用层系统开发再到优化及算法。而我当前从资源充分利用的角度来说,我买过开发板,并且本人的工作经验更倾向于驱动及中间件开发,所以从底层驱动这个点开始进阶会比较适合。

底层从定制uboot到Kernel启动及调试环境搭建,边复习边实践
1,第一步找出了我家了USB摄像头,既然摄像头是USB的,所以去下载个新的kernel移植下,并且要能识别usb。
Kernel5.4移植解决usb host设备无法识别问题--Apple的学习笔记
2,Kernel能自制,文件系统从来没有自制过,那么学习下buildroot进行了文件系统制作。
Buildroot自制文件系统sd卡启动成功--Apple的学习笔记
3,文件系统涉及到常用文件格式,深入学习下
winhex解析FAT32存储格式理解MBR--Apple的学习笔记
4,学习最好是有重点的,Linux驱动开发找就学习过,本次的重点目标就定义为memory,因为视觉相关的产品除了和网络传输有关还和存储及内存有关。
理论复习:MMU技术--Apple的学习笔记
5,uboot定制的前提是复习下uboot相关内容
ARMv8,v7内核基础--Apple的学习笔记
6,移植最新uboot,复习流程
移植uboot[2020.10.r4]--Apple的学习笔记
7,简单定制uboot,打造自己的产品
uboot定制--Apple的学习笔记
8,基础复习
lds连接文件基础复习,因为和memory布局相关
lds链接文件--Apple的学习笔记
Makefile复习--Apple的学习笔记
9,sd卡协议深入
SD卡物理层协议--Apple的学习笔记
10,从uboot过度到kernel,学习kernel启动流程
Linux kernel启动流程--Apple的学习笔记
11,学习了kernel和uboot的启动,那么做个小应用,让uboot支持双系统启动。
定制uboot支持双系统启动--Apple的学习笔记
12,正式进入kernel的学习和复习
基础学习:kernel内存分配函数--Apple的学习笔记
设备驱动模型学习:Kobject和Kset及设备驱动模型--Apple的学习笔记
13,工欲善其事必先利其器
为了之后可以高效的更新代码,还是需要搭建NFS挂载系统和TFTP下载zImage的功能。
uboot支持NFS及TFTP启动内核及文件系统--Apple的学习笔记
14,在buildroot中创建开发环境
之前buildroot我只是用来创建文件系统,编译的是buildroot自带的4.19。现在再学习了下buildroot后,我更改为了5.4版本内核。但是编译器使用的依然是内置的uclib。主要是看到buildroot可以容易的添加lib库,比如openssh。
buildroot内核定制环境创建--Apple的学习笔记
15,先做一个驱动,小试牛刀,应该说先配置一个usb gadget虚拟u盘的驱动
主要使用打印当时调试
解决usb虚拟u盘无法probe驱动的问题--Apple的学习笔记
上面是编译到内核,下面做一个全模块加载的
解决Kconfig tristate导致模块加载usb gadget问题--Apple的学习笔记
16,单步调试和远程调试
为了将来更加高效,所以单步调试和通过ssh及远程gdb还是需要的,并且若是用户态开发可以用ccs9或vscode单步调试,目标就是越来越高效,所以进行了相关库的交叉编译及使用。
busybox制作及移植ssh和gdb支持ccs9调试--Apple的学习笔记
17.内核调试
虽然ftrace等都可以调试内核,但是是基于打印的,我就是想要再高效些。在没有仿真器的情况下,相对高效的就是kgdb还是qemu模拟调试内核了。结果环境搭建成功,网上还看到了一个eclipse来配合qemu调试的,之后尝试下。
qemu调试arm内核--Apple的学习笔记

至此一切准备工作完成,可以正式进入驱动开发了

你可能感兴趣的:(大总结:从定制uboot到双系统Kernel启动文件系统--Apple的学习笔记)