002——编译鸿蒙(Liteos -a)

news2025/1/22 9:12:32

目录

一、鸿蒙是什么

二、Kconfig

2.1 概述

2.2 编译器

2.3 make使用


本文章引用了很多韦东山老师的教程内容,算是我学习过程中的笔记吧。如果侵权请联系我。

一、鸿蒙是什么

这里我补充一下对鸿蒙的描述

        这张图片是鸿蒙发布时使用的,鸿蒙是一个很大的东西但是看起来他和linux差不多,其实内核和操作系统是两个东西,或者说他们是包含关系,内核是操作系统的一部分。这个在一年前我学linux时写文章就有提到过。鸿蒙的内核可以是linux也可以是liteos,这里沿用了ARM架构的划分根据芯片的电路复杂程度划分成了a和m两个级别。底层可能不太一样,因为linux是宏内核,驱动是内核的一部分。所以我们经常要插入驱动模块。在很久以前linux连插入功能都没有,只能重新编译然后重启。鸿蒙用的是微内核,把驱动分离出来了有个驱动子系统。在向上就是服务框架了,linux也是各种server思想上是差不多的。服务上就是用户可编辑的应用层。概念很大,但是这里的每个点都需要开发人员一起去优化。可做的东西还挺多的。

        随着科技发展现在纯m核的芯片性能也很强a和m的界限变得很模糊,我现在有个疑问就是a和m的本质区别是什么。

        我在韦东山老师的社区也发了。

m和a的区别到底在哪,或者说mcu和soc的界限在哪 - 嵌入式Linux开发 - 嵌入式开发问答社区

        鸿蒙的liteos-a没有linux那么强大,它属于RTOS的范畴,小,启动快速,非常适合用在嵌入式领域。后面发展前景也不错,所以我毕设也选的它。不过工作量评估错误,现在有做不完的风险了。

鸿蒙IDE分为南向和北向,北向指APP南向是内核

下面是APP开发的插件,基于vscode的

华为集成开发环境IDE DevEco Device Tool下载 | HarmonyOS设备开发

二、Kconfig

2.1 概述

        所以内核只要支持menuconfig都是使用的Kconfig,可以从一下途径获取资料。

任一个Linux内核的Documentation\kbuild\kconfig-language.rst

https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/

        链接是RT-thread的开发指南,其实RT-thread也是个很先进的RTOS,而且是国产的。年轻人总是有孜孜不倦的创造力。老的操作系统由于其附带资源太多已经难以调转研发方向(这里应该有个很贴切的成语,我忘记了叫什么,哈哈文盲了。)RT-thread支持命令行,smart版本还支持用户态。由于Linux的成功性和当前世界主流程序员大佬的编程风格都喜欢命令行所以现在很多新的系统都是模仿linux来做的。(用着确实舒服了,而且适应起来也很快)

cp  tools/build/config/debug/imx6ull_clang.config .config   // 配置

make clean      // 先清除一下,否则会提示错误

make  -j  8     // 编译内核,可以得到out/imx6ull/liteos.bin

make  rootfs    // 编译根文件系统,可以得到rootfs.img

cp  out/imx6ull/rootfs.img out/imx6ull/rootfs.jffs2 // 改个名易辨认,烧写工具使用rootfs.jffs2

完整编译过程

内核的配置包括架构、芯片公司、芯片型号、板卡、硬件的版本。

因为可以用图形化配置我们试试都能配置什么

执行命令make menuconfig

可选的东西很多

我们可以对比一下linux的,少了很多东西因为驱动是分离的所以这里修改的只是原语上面那层

        回到liteos的编译这里可以选编译器,我们linux编译器这里是直接指定一个字符串的可选更丰富一些。 

可以选单片机型号

这里是韦东山老师移植的时候加的,正常只支持海思的芯片顶多加点RK的

还可以选GIC的版本,但是说实话我不知道这个GIC是不是指的中断控制器

还可以启动一些内核的特性

driver这里只到总线这层没具体的设备,linux的还支持具体设备选择。期待进一步丰富

在之前学习linux我就有说过这些所有的menuconfig图形化可配置的项都来源于.config这个文件

每个菜单的具体描述都在Kconfig这个文件中

具体语法可以看韦东山老师的网站提供的文档。解释很详细。这里我就不赘述了。

后面毕设做完有时间的话出一期相关语法的学习

2.2 编译器

        编译最常用的肯定就是gcc+make了,我的hardware simuliation项目搭建环境的时候演示过,代码在csdn我以前发布的文章里。视频B站有。讲解过程就简化一下咯windows的gcc环境我就不安啦。

简单复习一下编译过程和gcc使用方法

其实编译器比操作系统更有技术深度,只是复杂度没操作系统高。

一个c/c++文件要经过预处理、编译、汇编和链接才能变成可执行文件。

(1)预处理 C/C++源文件中,以“#”开头的命令被称为预处理命令,如包含命令“#include”、宏定义命令“#define”、条件编译命令“#if”、“#ifdef”等。预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“.i”文件中等待进一步处理。

(2)编译 编译就是把C/C++代码(比如上述的“.i”文件)“翻译”成汇编代码。

(3)汇编 汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现为ELF目标文件(OBJ文件)。“反汇编”是指将机器代码转换为汇编代码,这在调试程序时常常用到。

(4)链接 链接就是将上步生成的OBJ文件和系统库的OBJ文件、库文件链接起来,最终生成了可以在特定平台运行的可执行文件。

hello.c(预处理)->hello.i(编译)->hello.s(汇编)->hello.o(链接)->hello

echo 'main(){}'| gcc -E -v -  // 它会列出头文件目录、库目录(LIBRARY_PATH)

2.3 make使用

我写过好多文章大家可以参考下,也可以参考我的另一个项目写的

http://t.csdnimg.cn/z1VVj

http://t.csdnimg.cn/qDNu4

【002-编译框架搭建】 https://www.bilibili.com/video/BV1mN4y177mH/?share_source=copy_web&vd_source=14a18fc17fc55c8c188a7883c6a4c42e

---------------------------------------------------------------------------------------------------------------------------------

最近在移植有好多问题想交流一下感兴趣的同学可以一起:814096189

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据预处理:重复值

数据重复值处理 数据重复值出现情况重复的记录用于分析演变规律重复的记录用于样本不均衡处理重复的记录用于检测业务规则问题 数据重复值出现情况 数据集中的重复值包括以下两种情况: 数据值完全相同的多条数据记录。这是最常见的数据重复情况。数据主体相同但匹…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI:用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…

五个跟进方法,让你的老外客户不再跑路!

一、不同客户该怎么跟进? 1.已报价的客户 在向客户报过价之后,过几天要记得再询问一下对方是否收到了报价,如果没收到就提醒一下客户必要时将价格再发过去,如果客户已收到还要再进一步了解其对于报价的想法。 如果客户有兴趣也有需要&…

外包2月,技术倒退警钟长鸣。。。。。

曾经的我,作为一名大专生,在湖南某软件公司从事功能测试工作近四年。日复一日的工作让我陷入舒适区,不思进取。直到今年8月,我才意识到自己的技术停滞不前,女友的离开更是让我痛定思痛,决定改变现状&#x…

如何选择合适的奶瓶?五大超实用选购技巧,新手宝妈必看

奶瓶什么品牌好?奶瓶是每个新生宝宝都需要用到的辅喂产品,然而市场上许多网红品牌为了赚快钱,往往凭借外观设计、性价比和广告营销来吸引消费者。这些品牌由于缺乏专业技术,往往没有对选材用料和安全性进一步的优化,从…

使用jQuery的autocomplete实现数据查询一次,联想自动补全

书接上回,上次说到在jsp页面中,通过监听输入框的数值变化,实时查询数据库,得到返回值使用autocomplete属性自动补全,实现一个联想补全辅助操作,链接:使用jquery的autocomplete属性实现联想补全操…

Redis数据结构对象中的类型检查与命令多态、内存回收

类型检查与命令多态 概述 redis中用于操作键的命令基本上可以分为两种类型。其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令、RENAME命令、TYPE命令、OBJECT命令等. 而另一种命令只能对特定类型的键执行,比如说 1.SET、GET、APPEND、…

Vector Magic:矢量图像转换神器,轻松驾驭Mac与Win双平台

在数字化时代,图像已经成为我们生活和工作中不可或缺的一部分。无论是设计师、艺术家,还是普通用户,都对图像质量有着极高的要求。而矢量图像,以其清晰度高、可无限放大的特点,逐渐受到广大用户的青睐。今天&#xff0…

打破沟通壁垒:跨部门需求冲击与IT部门的应对智慧

引言 在快节奏、高要求的互联网行业,跨部门间的有效沟通是确保项目顺利进行和公司业务稳定发展的基石。然而,需求突袭往往成为打乱这一稳定局面的重要因素。 事件的背景 作为一IT部门负责人,在跨部门的领导层沟通会议上,一个在事…

深度解析深度学习中的长短期记忆网络(LSTM)(含代码实现)

在深度学习中,长短期记忆网络(LSTM)是一种强大的循环神经网络结构,能够更好地处理长序列数据并减轻梯度消失的问题。本文将介绍LSTM的工作原理,并使用PyTorch实现一个简单的LSTM模型来展示其在自然语言处理中的应用。 …

使用 wxWidgets 的 wxAUI 界面库,创建功能丰富的软件界面

目录 前言: wxAUI 的优势: 使用 wxAUI 创建软件界面的步骤: 以下是一些使用 wxAUI 创建软件界面的技巧: 案例: 总结: 前言: 软件界面是用户与软件交互的重要桥梁,一个好的界面…

应用测评要求解读-三级

身份鉴别: a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; 1. 在未登录状态下尝试直接访问任意操作页面或功能,查看是否具有登陆界面。 2.询问或者测试…

《你就是孩子最好的玩具·升级版》笔记(四)给父母的话

经典摘录 两岁到三岁之间是最具有挑战性的一段时期。在这个阶段,你的工作最多,责任也最大,因为你将极大地影响并决定孩子的情感发育。“当妈妈本来就不容易,你并不需要时时刻刻都开心,这很正常。” 【●反省自己生气的…

Vue技能树总结01

Vue vs React 相似之处: 它们都有使用 Virtual DOM;提供了响应式(Reactive)和组件化(Composable)的视图组件。将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。React 比 Vue 有更…

MySQL数据自动同步到Es

Logstash 测试数据准备 DROP DATABASE IF EXISTS es;CREATE DATABASE es DEFAULT CHARACTER SET utf8;USE es;CREATE TABLE book (id INT NOT NULL,title VARCHAR(20),author VARCHAR(20),price DECIMAL(6,2),PRIMARY KEY(id) );DROP PROCEDURE IF EXISTS batchInsertBook;DELI…

极大似然估计和最大参数后验估计

概率是已知模型和参数,推数据;统计(似然)是已知数据,推模型和参数。对于函数 x表示某一个具体的数据;θ表示模型的参数。 如果θ是已知确定的,x 是变量,这个函数叫做概率函数(prob…

全国人口密度分布数据

数据福利是专门为关注小编博客及公众号的朋友定制的,未关注用户不享受免费共享服务,已经被列入黑名单的用户和单位不享受免费共享服务。参与本号发起的数据众筹,向本号捐赠过硬盘以及多次转发、评论的朋友优先享有免费共享服务。 对人口数量、…

网络架构层_交换机连接使用

网络架构层_交换机连接使用 交换机是不是不会用呀?交换机,服务器,路由器,防火墙,网关,这些都是嘛呀? 网上的一些网络架构图,具体项目按照实际考虑。 交换机的Console口——通过Con…

递增三元组C++

题目 输入样例&#xff1a; 3 1 1 1 2 2 2 3 3 3输出样例&#xff1a; 27 思路1 题目让我们求所有满足Ai < Bi < Ci的三元组组合&#xff0c;我们可以先将A, B, C三个数组按升序排序&#xff0c;设计分别指向A数组和C数组的指针ia、ic&#xff0c;一开始指向数组的第一…

数据结构与算法1-大O表示法

大O指Big Operation&#xff0c;可以用来表示时间复杂度和空间复杂度 常见大 O O O 表示法 按时间复杂度从低到高 黑色横线 O ( 1 ) O(1) O(1)&#xff0c;常量时间&#xff0c;意味着算法时间并不随数据规模而变化绿色 O ( l o g ( n ) ) O(log(n)) O(log(n))&#xff0c;…