嵌入式与Linux(二):嵌入式Linux开发

姓名:王央京    学号:18050100052   学院:电子工程学院

转自:https://www.zhihu.com/question/395435388/answer/1279941719

【嵌牛导读】本文介绍了嵌入式Linux开发的知识

【嵌牛鼻子】嵌入式Linux开发

【嵌牛提问】在了解Linux系统概念后,该如何学习Linux开发?

【嵌牛正文】

嵌入式Linux的入门项目开发,主要包含以下的知识点:

1.数据输入/输出的接口 -- 嵌入式Linux驱动开发

2.数据运行的平台和支持环境 -- uboot开发,Linux内核裁剪,文件系统移植

3.数据处理和转换 -- 嵌入式应用层开发

对其中的每一大项进行细分,嵌入式Linux驱动开发:

1.对于外部设备的硬件实际操作和调试(这部分和单片机时相通的),包含SPI,I2C,ETH,HDMI, CMOS等

2.Linux实现驱动模块的API接口(包含基础的Module_xxx的函数,还有添加类,设备的接口函数以及引申的虚拟总线接口)

3.为解决驱动代码冗余的设备树相关知识和解析设备树的代码实现

uboot开发,Linux内核裁剪,文件系统移植:

1.uboot主要涉及嵌入式裸机的应用开发,非原厂人员基本不会修改,所以基本不会在uboot中实现复杂应用。

2.Linux内核裁剪,主要围绕Menuconfig内的配置删减功能,以及将驱动模块添加到内核的实现。

3.文件系统移植,主流的是移植支持QT或者安卓的环境到平台中,当然无界面的应用使用最小系统也能满足需求, 已经在此基础上移植支持的基础lib,启动文件,指令文件和目录等。

嵌入式应用层开发:

1.使用open,write,read,ioctl等对底层硬件信息的操作(包含接收,发送)

2.基于系统接口的对于命令行信息,进程和线程,socket通讯接口(TCP/UDP), 同步机制(互斥锁,自旋锁,管道,消息队列等), 文件I/O等基础Linux API处理

3.基于上述接口实现的上层应用实现,如基于TCP的网络应用HTTP或MQTT,视频应用RTMP,以及为了功能需求而引入的线程或进程机制,而为了满足复杂应用的需求,线程或进程间同步机制也被使用,此外可能会引入Sqlite用于数据的管理,引入openssl用于数据的加密,这些都是应用层开发常用的技术手段,嵌入式Linux比单片机的最大优点就是有很多拿来即用的方案,十分方便应用层的功能开发。

4.为了满足工业界面化需求引入的界面实现方案,目前嵌入式的主流就两大类QT/C++和Android/Java(为了满足Jave对底层的操作,引入了JNI的实现)。

除了上述具体内容之外,还有一些重点需要强调:

1. 嵌入式Linux驱动中驱动层相关的API接口,DTS语法这些都是从业者必须掌握的技术,必须去理解掌握。

2. uboot开发,Linux内核裁剪,文件系统移植部分在项目中大多是按照官方方案在走流程,这部分的源码很多是精华,不适合入门者去研究,能够编译构建个满足需求的环境就够了。

3. 嵌入式应用层开发,往往是需要掌握的核心 。应用层目前已经开始向桌面或移动端的应用靠拢,除了对底层硬件的直接操作外,其运用的语言包含C(Linux API), C++, Python, nodejs, Java以应对图形界面,网络web,算法等的多方面需求。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容