全志V3S嵌入式驱动开发(开发软件搭建)
-
要学好嵌入式,其实最好自己可以画板子、调试板子、写软件、调试软件这样来学习。简单的51单片机、stm32这样的mcu或许画起来不是很复杂,但是如果是运行linux系统的soc芯片,那么就没有这么简单了。虽然说linux的核心板无非就是soc、ddr、emc、pwic这些,然而如果真的需要自己画图、自己布线的话,还是需要花费不少心力的。
1、选择一个简单的soc芯片来学习
**很多同学都对ddr比较陌生,更对ddr如何进行pcb layout比较担心,那么我们就可以选择那些集成了ddr的soc,同样可以运行linux系统,比如说V3S就是其中的一种。**和一般的soc相比较,它除了集成ddr之外,还集成了ethernet phy,这对于我们学习网络还是非常方便的。
另外一般的soc中,cpu的频率都比较高一点,很多都是1G以上,cpu本身也支持mmu和cache。当然,它相比较mcu最重要的方面,还是在于对音频、视频编解码的支持,这方面mcu差很多。不过,这也与mcu的定位有关,毕竟大多数mcu都是用于工业上使用,而soc还是用在消费品居多,虽然soc在工业上面用的也不少。
2、选择一个开发板
电商网站上V3S开发板很多,大家可以灵活进行选择。不过,V3S支持从SD卡启动,也支持Spi Nor Flash/Spi Nand flash启动,还支持USB启动,所以大家如果是为了学习V3S,还是需要购买一个SanDisk品牌的micro SD卡。这样,把所有的code都放在一张micro SD卡上面,就可以进行所有的驱动开发工作。
V3S中SD卡的启动顺序优先级是最高的,如果SD卡启动失败,才会进行其他方式的选择。这方面来讲,对于初学者来说是很方便的。下面这张图就摘抄自V3S的芯片手册,Page 60
3、准备串口和type C线
串口打印是嵌入式开发的主要方式。在没有驱动屏幕之前,开发者和芯片的主要交流方式就是串口,甚至对于部分应用来说,根本就没有屏幕,这也是有可能的,比如说一些服务器引用。所以对于开发者来说,最好购买一个usb转ttl的模块,这样就算将来学习其他的板子也会用得到。
type C线主要是用来进行电源供电使用的。当然,也有的开发板选择的是传统的usb接口,这也是可以的,没有好坏之分。
4、准备开发的电脑和软件
电脑是肯定要准备的,笔记本电脑最好,一般配置即可,内存最好大一点。此外,因为V3S的cpu是arm,所以这里就用到交叉开发的内容。所以我们需要依次安装虚拟机、ubuntu系统、交叉编译工具、uboot代码、linux kernel代码、build root代码这些内容。等到编译出合适的image文件之后,再把这些文件烧入到SD卡上面,这样简单的系统就可以跑起来了。
5、深入嵌入式linux驱动的开发
在前面第4个步骤的时候,虽然uboot起来了、kernel起来了、文件系统也起来了,但是很多驱动还没有加载上去。所以这个时候才走到了linux驱动开发这个环节,拿到电路图、熟悉芯片手册、按照linux框架编写驱动代码、测试代码,这才是真正驱动开发的开始。这中间还会涉及到很多的问题,比如硬件的测量、板子的虚焊、驱动的bug,这都是避免不了的,慢慢往前做就好了。
以前我也有个观点,认为学习嵌入式只要用qemu仿真平台来学学就可以了。后来发现了,其实不是那么一回事。从技术角度来看,用qemu来学习嵌入式,这个是完全成立的。**但是我们忽略了,只有实际物理平台的效果反馈,才能不断激发学习者的兴趣去学习新的内容。**有过嵌入式开发经验的同学都知道,嵌入式的知识点比较琐碎,如果我们只是在平台上仿真得到一些结果,这中间的成就感有可能并没有实际点灯、打印那样多。有过类似体验的朋友,应该能理解我说的内容。
另外,很多同学认为嵌入式知识点多,觉得就应该把所有的理论知识都学习到了,才开始去实际的硬件学习。这也是本末倒置的做法。很多时候,理论和实践是相互促进的。用到什么学什么,实践遇到的问题可以把理论补一下继续实践,而不是等理论学习好了再去进行。况且,没有实践支撑的理论,自己理解地也未必那么正确、那么深入。
不多说,我们看下要学习V3S嵌入式驱动,需要怎么搭建开发环境。
1、windows平台安装一个串口打印工具
串口打印软件是嵌入式开发的标配。建议安装SecureCRT或者Xshell。
2、windows平台安装一个文本编辑工具
Notepad++就很好。
3、安装VirtualBox虚拟机
因为V3S的源代码、交叉编译工具都是基于linux的,所以这里建议大家安装一个虚拟机。很多同学喜欢用vmware,不过还是建议大家使用VirtualBox这款虚拟机软件,毕竟这没有版权问题的困扰。此外,已经使用vmware的同学也可以使用VirtualBox提供的命令工具,很轻松地转到VirtualBox平台上面,blog的最后也给出了完整的转换方法。
3.1 下载VirtualBox虚拟机软件
https://www.virtualbox.org/wiki/Download_Old_Builds_6_1
3.2 下载VirtualBox对应版本的Extension Pack软件
很多同学安装了VirtualBox软件,但是在虚拟机里面没有使用办法使用外部的USB接口,本质原因就是没有安装extension pack软件包。
3.3 安装VirtualBox软件,安装extension pack软件
4、下载ubuntu软件
下载的ubuntu操作系统已经非常好用了,反正比我们读书时用的redhat 9好用多了。建议选择ubuntu版本的时候不一定要用最新的版本,使用较新的版本就可以了。比如今年是2023年,那我们可以选用2020年的ubuntu版本就不错。所以这里,我们选用了ubuntu20.04, 下载地址在这https://releases.ubuntu.com/focal/
5、创建虚拟机、安装ubuntu系统
5.1 利用VirtualBox创建一个虚拟机,硬盘留大一点,比如30G左右;
5.2 将下载的iso文件导入到虚拟机的虚拟光驱里面,开始启动;
5.3 安装ubuntu和一般的OS没有区别,就是各种配置,一般就是一路按“确定”就可以;
5.4 ubuntu安装完毕后,弹出iso文件,重启虚拟机;
5.5 添加几个重要的设置,
1)选择“设备”-》“安装增强功能”,这样才能虚拟机屏幕最大化;
2)选择“设备”-》“共享文件夹”,这样ubuntu就可以和外面的windows共享目录了,位于/media下;
3)选择“设备”-》“共享粘贴板”,这样ubuntu和windows的鼠标可以相互拷贝了。
6、初步设置ubuntu系统
这个时候安装的ubuntu系统还比较原始,需要安装一些基础的软件,这样有利于后期的开发工作。下面是自己常用的一些操作,供大家参考,
6.1 通过“Software & Updates”软件更换软件源,比如aliyun、163
6.2 把shell软件放在左侧的快捷栏里面
6.3 安装i386软件包
sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386
6.4 安装gcc、g++
6.5 安装cmake
6.6 安装git
6.7 设置.vimrc配置
set nocompatible set backspace=2 set number set incsearch set history=50 set autowrite
其他:
a) 前面说过可以用VirtualBox打开vmware地vmdk软件,这里给出命令,大家可以好好尝试下。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd "CherryPi_V3S-disk1.vmdk" "cloned.vdi" --format vdi
b) 软件编辑尽量用vim,如果没有语法提示,可以sudo apt-get install vim即可。还是不行,可以再sudo apt-get update一下,再安装vim。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号