正点原子嵌入式linux驱动开发——LinuxC编程入门

本章主要使用Ubuntu自带的vi编辑器来编写C语言代码。
对基础知识不感兴趣的读者可以查阅并使用VSCcode等编辑器。
首先,创建一个名为“C_Program”的文件夹来管理所有代码。
每次编写的代码都保存在“C_Program”文件夹下的子文件夹中,以便于管理。
在“/etc/vim/vimrc”文件中,将制表符设置为4个空格,并在文件的最后两行添加相应的代码来启用行号显示。
设置完成后,V编辑器会显示“HelloWorld!”它用于编写经典代码:创建名为“main.c”的文件,内容如下:使用“cat”命令查看内容如图所示。
编译代码。
Ubuntu下的C语言编译器是GCC。
只需安装“构建所需”包即可。
安装完成后使用命令查看如图。
安装成功后,GCC编译器版本为7.5.0,适用于x86架构CPU。
对于ARM架构,必须使用ARM的GCC编译器,即交叉编译。
请注意,GCC编译器对于不同的体系结构是不同的。
使用gcc编译器编译“main.c”文件。
”,如图。
可执行文件可以自定义,使用gcc命令时,可以使用“-o”指定文件名,例如“main.c”,编译后会生成一个名为将创建“main”,如图所示,gcc编译命令的格式如下,主要选项如下:编写示例代码以显示GCC错误警告:第8行分号;编译完成后,GCC会发出错误信息。
GCC编译过程包括预处理、链接、链接等过程,使用make命令进行编译,并通过makefile指定编译哪些源代码文件。
这与Linux下广泛使用的GCC编译器相同。
,这样你就可以编写自己的Makefile要指定项目中要包含的源代码文件和依赖项,请在命令行中输入“makefile”和命令。
它执行更新。
总之,Makefile中的规则定义了目标文件及其依赖文件,命令执行更新。
Makefile的“最终目标”是Makefile中第一条规则的目标。
Makefile变量使用“==”进行变量赋值。
模式规则用于编译以特定扩展名结尾的文件,自动化变量用于简化命令执行。
Makefile中的false目标不会生成文件,用于避免与有效文件发生冲突。
Makefile支持条件判断和函数调用,实现逻辑控制和字符串处理。
本章介绍在Linux环境下使用GCC和Makefile编译并执行C语言代码。
学习之后,在实践中,你可以更好地理解流程。
基本的了解就足够了,某些应用需要深入的实践经验。

linux嵌入式开发是做什么的

嵌入式系统通常用于控制、监视或辅助机器和设备。
它是一个集软件和硬件于一体的综合系统,有时还包括机械等附件。
在国内,嵌入式系统被定义为以应用为中心、以计算机技术为基础的专用计算机系统,其软硬件必须满足功能、可靠性、成本、体积、功耗等方面的严格要求。
嵌入式系统开发主要使用C语言和C++,有时也会使用Java,特别是在嵌入式游戏开发和移动开发领域,Java的J2ME方向尤为突出。
嵌入式系统开发领域存在着巨大的机会,就业市场对该领域的人才需求量很大。
该领域主要分为三个部分:重点关​​注嵌入式Linux系统开发、开发环境搭建、内核理论和交叉编译;专注于嵌入式Linux应用开发、Linux应用编程、内核编译、系统调用;,重点关注嵌入式Linux系统下的驱动开发和内核深入分析。
目前,市场上专业的嵌入式培训课程很多,但质量良莠不齐,且大多是近几年新推出的。
据我所知,东方赛金嵌入式培训学院是最权威、最专业的,位于清华大学东门它位于清华大学并与清华大学有着密切的联系。
学院的师资队伍是整个嵌入式培训领域最优秀的,80%的教师来自清华大学、世界500强企业和中国顶尖IT企业。
如果你有条件参加培训,这将是一个不错的选择。
您不仅可以学习专业知识,还可以解决就业问题。
该就业单位通常比您正在寻找的工作更合适。

正点原子嵌入式linux驱动开发——LinuxDAC驱动

以STM32MP157为例,学习开发DAC(数模转换器)驱动程序。
DAC的功能是将数字信号转换为模拟信号,这与ADC(模数转换器)不同。
STM32MP157的DAC模块是12位数字输入电压输出类型,支持8位或12位模式,并且可以与DMA控制器配合工作。
提供两个独立通道,具有左对齐或右对齐数据配置选项,并支持同时更新。
在Linux上使用STM32MP157DAC需要设备树配置和驱动程序文件解析。
stm32mp151.dtsi文件包含DAC的节点信息,在查找兼容属性值时,可以找到核心驱动文件drivers/iio/dac/stm32-dac-core.c和stm32-dac.c。

DAC驱动使用regmapAPI,核心层stm32-dac-core.c负责时钟和电源初始化,stm32-dac.c实现与IIO驱动框架的集成。
了解stm32_dac结构、stm32_dac_probe函数、stm32_dac_iio_info结构、stm32_dac_read_raw和stm32_dac_write_raw函数很重要。
这些函数分别用于初始化、注册器件以及读取和设置DAC值。
分析硬件原理图可知,DAC和ADC通过JP2跳线帽连接,实现数据读取和配置。
要启用DAC驱动程序,请通过修改设备树文件来配置引脚、电压属性和通道。
在Linux内核配置中打开ST32MP157DAC驱动程序选项。
创建测试应用程序时,首先编译修改后的设备树并启动系统。
检查/sys/bus/iio/devices目录以验证DAC设备iio:device1是否存在。
该文件包含用于读取和设置DAC值的文件。
测试应用程序通过读取和设置原始DAC值,同时使用ADC收集的数据来验证DAC功能的准确性。
运行测试程序,输入DAC原始值,观察ADC采集到的实际值与理论值是否相符。
此过程可确保DAC驱动程序正确实现。
综上所述,DAC驱动开发与ADC类似,采用标准化驱动框架(如regmap、IIO),结合设备树配置实现硬件访问。
仔细分析驱动程序文件和硬件原理图并创建验证测试程序可以确保DAC功能正确实现。