千家信息网

怎么进行嵌入式linux系统应用开发

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章给大家介绍怎么进行嵌入式linux系统应用开发,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 关于嵌入式系统  平时大家说的嵌入式其实范围比较广的,是一种软硬件可裁剪,
千家信息网最后更新 2025年02月01日怎么进行嵌入式linux系统应用开发

这篇文章给大家介绍怎么进行嵌入式linux系统应用开发,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1 关于嵌入式系统

  平时大家说的嵌入式其实范围比较广的,是一种软硬件可裁剪,以应用为中心开发的专用系统,硬件平台可以是单片机,或者以ARM系列的处理器。单片机一般直接裸奔程序,不过现在有了好多基于单片机的系统,最近比较火的开源系统RT-Thread,做的还是不错的;基于ARM架构的处理器大部分用的是linux系统作为软件平台,也有部分设备用的是安卓系统(内核也是linux);

2 嵌入式linux系统应用开发

2.1 简介

  嵌入式系统开发包括内核、驱动、应用三大部分,今天主要说应用开发,内核与驱动就不多说了。嵌入式linux系统就是移植的linux内核,使用对应的编译器,把linux内核编译后下载到存储芯片,然后还需要做一个基本的根文件系统,这样系统就可以跑起来了,相对于PC上的系统,还是比较简单的。

2.2 应用开发环境

  现在网上有好多视频教程,一般第一节课都会教你怎么搭建开发环境。我这里简单罗列一下:

  1. 安装一个linux系统的虚拟机,我用的是Ubuntu。

  2. 然后给虚拟机安装对应的交叉编译工具。

  3. 安装常用工具,并配置:nfs、tftp、ftp、ssh服务、samba服务、vi必要的配置。

  4. 在板子上面使用nfs,还需要给板子的linux内核配置上nfs-client和nfs文件系统支持;

  5. 我喜欢在板子上移植一些好用的工具,比如:ftp、ssh服务(终端登录和传文件用)、crontab等

虚拟机登录:安装ssh服务, 后可以用一些终端软件通过ssh登录,这样不用在虚拟机的桌面里使用terminal了
共享文件:我喜欢通过samba与windows共享目录, 在windows下把共享目录映射为网盘,使用起来也比较方便;我觉得这种共享很方便,比使用一些共享软件要方便。挂载为网盘后和操作本地磁盘一样,比较直观。

2.3 一般开发流程

  在一些视频教程中,一般介绍的开发流程是这样的:在windows下编辑好代码,在虚拟机里使用交叉编译器对代码进行交叉编译,然后通过tftp/ftp下载到板子里,或者nfs挂载后运行测试; 入门时是这样,但是如果是在公司做实际的产品开发,这样效率就会很低的。

  下面是我常用的流程:

  1. 在windows下或者虚拟机里编辑代码,代码编辑器一般用sourceInsight、VSCode、Eclipse等。

  2. 代码在写的时候,注意把与底层硬件交互的地方加编译选项,这样是通过编译开关控制硬件访问的代码是否启用。

  3. 第二步所做的工作,在这一步就起到了作用,在Makefile里,会写上根据不同的编译选项,选择不同的编译器,如果是使用Ubuntu里的编译器,那么就把硬件相关的交互屏蔽,这样编译出来的程序,可以直接在Ubuntu上运行了,这样一来,我们可以在Ubuntu上做代码单元测试、程序的逻辑验证、运行性能测试等。80%的问题可以在Ubuntu里解决。

  4. 在Ubuntu里测试没问题后,在交叉编译,通过nfs共享目录,在板子里运行调试。

  这样其实是减少下载程序到板子上这个过程,把逻辑验证、代码单元功能验证放在Ubuntu里来验证测试,而且Ubuntu里使用GDB调试也比较板子上方便。

2.4 调试

  最常用,也是最有效的方式就是加打印信息,记日志!基本上可以解决80%的问题。如果遇到程序异常挂掉(比如段错误等),程序挂掉一般没有任何提示信息,也不确定是在那里挂掉的,这种问题一般使用GDB跟踪,或者在代码里加入backtrace信息输出的代码。

3 结束语

  嵌入式linux系统应用开发,相对于内核、驱动开发,入门可能是比较容易的,毕竟应用层的开发,没有那么多高深的东西。应用层与具体业务关联比较大,因此也就导致应用开发的工作量比较大,需求也会有经常变更风险,但是应用开发里会有好多技巧,可以大大提高工作效率;linux应用可以使用C++进行开发,利用C++的面向对象思想,以及现在C++11之后的新特性功能,提供了好多类似于Java里的一些好用的功能,可以大大提高应用的开发效率。

关于怎么进行嵌入式linux系统应用开发就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

开发 系统 应用 编译 代码 嵌入式 应用开发 内核 板子 程序 测试 文件 硬件 编译器 问题 交叉 服务 运行 验证 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南数据网络技术质量服务 北辰区信息化软件开发专业服务 网站数据库密码修改 sr550服务器怎么有20核 数据库崩溃会给我们带来什么危害 网络安全工具图片 数据库和大数据技术 高中网络安全教育论文 江苏苏州公安局网络安全支队长 广州 网络安全 规划方案 金蝶服务器数据库未启动 网络安全竞赛总结 计算机网络技术基础知识2021 网络安全法多少年检测一次 助乐家互联网科技有 青海首选dns服务器 互联网推广公司推荐黔文科技 多进程提取游标中的数据库 采集淘宝图片数据库 惠州软件开发班培训 软件开发需要哪些科学领域 湖北数据网络安全工程联系方式 软件开发学几年 网络安全宣传的文章 2020年两会网络安全 广灵现代化网络安全常见问题 一台服务器当前设备只能领取一次 外国网络安全行业排名 网络安全法损失 南京工商软件开发专业服务
0