移动开发
文章平均质量分 93
OH五星上将
这个作者很懒,什么都没留下…
展开
-
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【扩展组件】中
OpenHarmony系统的动态加载与链接机制主要是由内核加载器以及动态链接器构成,内核加载器用于加载应用程序以及动态链接器,动态链接器用于加载应用程序所依赖的共享库,并对应用程序和共享库进行符号重定位。与静态链接相比,动态链接是将应用程序与动态库推迟到运行时再进行链接的一种机制。VDSO(Virtual Dynamic Shared Object,虚拟动态共享库)相对于普通的动态共享库,区别在于其so文件不保存在文件系统中,存在于系统镜像中,由内核在运行时确定并提供给应用程序,故称为虚拟动态共享库。原创 2024-09-20 22:17:36 · 421 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【扩展组件】上
Syscall Handler的具体实现在kernel/liteos_a/syscall/los_syscall.c中OsArmA32SyscallHandle函数,在进入系统软中断异常时会调用此函数,并且按照kernel/liteos_a/syscall/syscall_lookup.h中的清单进行系统调用的入参解析,执行各系统调用最终对应的内核处理函数。原创 2024-09-20 21:51:36 · 778 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【时间管理】
软件定时器以Tick为基本计时单位,当用户创建并启动一个软件定时器时,OpenHarmony系统会根据当前系统Tick时间及用户设置的定时间隔确定该定时器的到期Tick时间,并将该定时器控制结构挂入计时全局链表。系统可配置的软件定时器资源个数是指:整个系统可使用的软件定时器资源总个数,而并非是用户可使用的软件定时器资源个数。软件定时器是系统资源,在模块初始化的时候已经分配了一块连续的内存,系统支持的最大定时器个数由los_config.h中的LOSCFG_BASE_CORE_SWTMR_LIMIT宏配置。原创 2024-09-20 21:19:41 · 493 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核通信机制】下
当用户态产生锁的竞争或释放需要进行相关线程的调度操作时,会触发Futex系统调用进入内核,此时会将用户态锁的地址传入内核,并在内核的Futex中以锁地址来区分用户态的每一把锁,因为用户态可用虚拟地址空间为1GiB,为了便于查找、管理,内核Futex采用哈希桶来存放用户态传入的锁。信号(signal)是一种常用的进程间异步通信机制,用软件的方式模拟中断信号,当一个进程需要传递信息给另一个进程时,则会发送一个信号给内核,再由内核将信号传递至指定进程,而指定进程不必进行等待信号的动作。原创 2024-09-20 20:53:14 · 544 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核通信机制】中
在互斥锁设置为本协议属性情况下,申请互斥锁时,如果高优先级任务阻塞于互斥锁,则把持有互斥锁任务的优先级备份到任务控制块的优先级位图中,然后把任务优先级设置为和高优先级任务相同的优先级;在互斥锁设置为本类型属性情况下,允许同一个任务对互斥锁进行多次持有锁,持有锁次数和释放锁次数相同,其他任务才能持有该互斥锁。在互斥锁设置为本类型属性情况下,如果任务试图对一个互斥锁重复持有,或者试图释放一个由别的任务持有的互斥锁,或者如果一个任务试图释放已经被释放的互斥锁,都会返回错误码。原创 2024-09-20 20:51:15 · 774 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核通信机制】上
ExampleSemTask1定时阻塞模式申请信号量,等待时间为10Ticks,因信号量仍被ExampleSemTask2持有,ExampleSemTask1挂起,10Ticks后仍未得到信号量,ExampleSemTask1被唤醒,试图以永久阻塞模式申请信号量,ExampleSemTask1挂起。示例中,任务Example_TaskEntry创建一个任务Example_Event,Example_Event读事件阻塞,Example_TaskEntry向该任务写事件。用作同步时,初始信号量计数值为0。原创 2024-09-20 16:35:50 · 651 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内存管理】
内核采用伙伴算法管理空闲页面,可以降低一定的内存碎片率,提高内存分配和释放的效率,但是一个很小的块往往也会阻塞一个大块的合并,导致不能分配较大的内存块。堆内存管理,即在内存资源充足的情况下,根据用户需求,从系统配置的一块比较大的连续内存(内存池,也是堆内存)中分配任意大小的内存块。堆内存管理的主要工作是动态分配并管理用户申请到的内存区间,主要用于用户需要使用大小不等的内存块的场景,当用户需要使用内存时,可以通过操作系统的动态内存申请函数索取指定大小的内存块。相同大小的内存块挂在同一个链表上进行管理。原创 2024-09-20 15:41:59 · 721 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【进程管理】
OpenHarmony 在系统启动内核初始化之后开始调度,运行过程中创建的进程或线程会被加入到调度队列,系统根据进程和线程的优先级及线程的时间片消耗情况选择最优的线程进行调度运行,线程一旦调度到就会从调度队列上删除,线程在运行过程中发生阻塞,会被加入到对应的阻塞队列中并触发一次调度,调度其它线程运行。若此时该进程中已无其它线程处于就绪态,则进程从就绪列表删除,只处于运行态;若此时该进程中还有其它线程处于就绪态,则该进程依旧在就绪队列,此时进程的就绪态和运行态共存,但对外呈现的进程状态为运行态。原创 2024-09-20 14:43:40 · 790 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【中断及异常处理】
即在程序运行过程中,出现了一个必须由CPU立即处理的事务,此时CPU暂时中止当前程序的执行转而处理这个事务,这个过程就叫做中断。通过中断机制,在外设不需要CPU介入时,CPU可以执行其它任务,而当外设需要CPU时,产生一个中断信号,该信号连接至中断控制器。当异常发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被异常打断的程序。以ARMv7-a架构为例,中断和异常处理的入口为中断向量表,中断向量表包含各个中断和异常处理的入口函数。CPU收到中断控制器发送的中断信号后,中断当前任务来响应中断请求。原创 2024-09-20 14:16:26 · 926 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核启动】
C语言启动阶段包含OsMain函数及开始调度等,其中如图1所示,OsMain函数用于内核基础初始化和架构、板级初始化等,其整体由内核启动框架主导初始化流程,图中右边区域为启动框架中可接受外部模块注册启动的阶段,各个阶段的说明如下表1所示。上述启动代码已在 kernel/liteos_a/kernel/user/src/los_user_init.c 中,g_initPath 根据启动设置的不同,其值为 /dev/shm/init 或 /bin/init。创建新的进程空间,启动/bin/init进程。原创 2024-09-20 13:47:13 · 632 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【概述】
OpenHarmony 轻量级内核是基于IoT领域轻量级物联网操作系统Huawei LiteOS内核演进发展的新一代内核,包含LiteOS-M和LiteOS-A两类内核。LiteOS-M内核主要应用于轻量系统,面向的MCU(Microprocessor Unit)一般是百K级内存,可支持MPU(Memory Protection Unit)隔离,业界类似的内核有FreeRTOS或ThreadX等;原创 2024-09-19 22:00:21 · 640 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【SHELL】
用于显示文本文件的内容。需开启LOSCFG_FS_VFS。原创 2024-09-19 21:19:06 · 852 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【LMS调测】
LMS能够实时检测缓冲区溢出(buffer overflow),释放后使用(use after free) 和重复释放(double free), 在异常发生的第一时间通知操作系统,结合backtrace等定位手段,能准确定位到产生内存问题的代码行,极大提升内存问题定位效率。影子内存存放在内存池的尾部。内存从堆上申请后,会将数据区的影子内存设置为“可读写”状态,并将头结点区的影子内存设置为“不可读写”状态。在内存释放时,会检测被释放地址的影子内存状态值,若检测到影子内存非可读写,则会报重复释放错误。原创 2024-09-19 20:29:11 · 844 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【Trace调测】
Trace Mask事件过滤接口LOS_TraceEventMaskSet(UINT32 mask),其入参mask仅高28位生效(对应LOS_TRACE_MASK中某模块的使能位),仅用于模块的过滤,暂不支持针对某个特定事件的细粒度过滤。离线模式会将trace frame记录到预先申请好的循环buffer中。(可选)调用LOS_TraceEventMaskSet设置需要追踪的事件掩码(系统默认的事件掩码仅使能中断与任务事件),事件掩码参见los_trace.h 中的LOS_TRACE_MASK定义。原创 2024-09-19 17:32:50 · 871 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【异常调测】
利用FP寄存器可以得到父函数的栈帧,从栈帧中获取父函数的FP,就可以得到祖父函数的栈帧,以此类推,可以追溯程序调用栈,得到函数间的调用关系。异常接管是操作系统对运行期间发生的异常情况进行处理的一系列动作,例如打印异常发生时异常类型、发生异常时的系统状态、当前函数的调用栈信息、CPU现场信息、任务调用堆栈等信息。当系统发生异常时,系统打印异常函数的栈帧中保存的寄存器内容,以及父函数、祖父函数的栈帧中的LR链接寄存器、FP帧指针寄存器内容,用户就可以据此追溯函数间的调用关系,定位异常原因。原创 2024-09-19 17:06:41 · 978 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【内存调测】
在需要检测的代码段前后,调用LOS_MemUsedNodeShow接口,每次都会打印指定内存池已使用的全部节点信息,对比前后两次的节点信息,新增的节点信息就是疑似泄漏的内存节点。如果不开启该功能,也可以调用LOS_MemIntegrityCheck接口检测,但是每次申请内存时,不会实时检测内存完整性,而且由于节点头没有魔鬼数字(开启时才有,省内存),检测的准确性也会相应降低,但对于系统的性能没有影响,故根据实际情况开关该功能。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。原创 2024-09-19 16:36:30 · 970 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【扩展组件】
通过VFS层提供了POSIX标准的操作,保持了接口的一致性,但是因为M核的资源非常紧张,VFS层非常轻薄,没有提供类似A核的高级功能(如pagecache等),主要是接口的标准化和适配工作,具体的事务由各个文件系统实际承载。加载过程中,根据ELF文件的句柄以及程序头表的段偏移可以得到需要加载到内存的LOAD段,一般有两个段,只读段及读写段,如下所示,可以用readelf -l查看ELF文件的LOAD段信息。如图3所示,根据相应的对齐属性申请物理内存,通过每个段的加载基址及偏移将代码段或数据段写入内存中。原创 2024-09-19 15:56:34 · 1054 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【时间管理】
软件定时器以Tick为基本计时单位,当用户创建并启动一个软件定时器时,OpenHarmony LiteOS-M内核会根据当前系统Tick时间及用户设置的定时间隔确定该定时器的到期Tick时间,并将该定时器控制结构挂入计时全局链表。软件定时器是系统资源,在模块初始化的时候已经分配了一块连续的内存,系统支持的最大定时器个数由los_config.h中的LOSCFG_BASE_CORE_SWTMR_LIMIT宏配置,该值按产品实际需要设定。定时时间短的定时器总是比定时时间长的靠近队列头,满足优先被触发的准则。原创 2024-09-19 14:49:58 · 563 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【内核通信机制】
ExampleSemTask1定时阻塞模式申请信号量,等待时间为10Tick,因信号量仍被ExampleSemTask2持有,ExampleSemTask1挂起,10Tick后仍未得到信号量,ExampleSemTask1被唤醒,试图以永久阻塞模式申请信号量,ExampleSemTask1挂起。ExampleMutexTask2被调度,以永久阻塞模式申请互斥锁,并成功获取到该互斥锁,然后任务休眠100Tick,ExampleMutexTask2挂起,ExampleMutexTask1被唤醒。原创 2024-09-19 14:29:49 · 605 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【内存管理】
LiteOS-M内核内存模块把不连续的内存区域作为空闲内存结点插入到空闲内存节点链表,把不同内存区域间的不连续部分标记为虚拟的已使用内存节点,从逻辑上把多个非连续性内存区域实现为一个统一的内存池。控制块位于内存池头部,用于内存块管理,包含内存块大小uwBlkSize,内存块数量uwBlkNum,已分配使用的内存块数量uwBlkCnt和空闲内存块链表stFreeList。动态内存管理,即在内存资源充足的情况下,根据用户需求,从系统配置的一块比较大的连续内存(内存池,也是堆内存)中分配任意大小的内存块。原创 2024-09-19 13:49:47 · 948 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【任务管理】
因此在任务切换时会将切出任务的任务上下文信息,保存在自身的任务栈中,以便任务恢复后,从栈空间中恢复挂起时的上下文信息,从而继续执行挂起时被打断的代码。运行态→阻塞态 正在运行的任务发生阻塞(挂起、延时、读信号量等)时,将该任务插入到对应的阻塞队列中,任务状态由运行态变成阻塞态,然后发生任务切换,运行就绪队列中最高优先级任务。系统中任务ID号是唯一的,是任务的重要标识。就绪态→运行态 任务创建后进入就绪态,发生任务切换时,就绪队列中最高优先级的任务被执行,从而进入运行态,同时该任务从就绪队列中移出。原创 2024-09-18 22:22:17 · 706 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【中断管理】
中断触发: 中断源向中断控制器发送中断信号,中断控制器对中断进行仲裁,确定优先级,将中断信号发送给CPU。中断源产生中断信号的时候,会将中断触发器置“1”,表明该中断源产生了中断,要求CPU去响应该中断。当硬件产生中断时,通过中断号查找到其对应的中断处理程序,执行中断处理程序完成中断处理。中断优先级: 为使系统能够及时响应并处理所有中断,系统根据中断事件的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。代码实现如下,演示如何创建中断、触发指定的中断号进而调用中断处理函数、删除中断。原创 2024-09-18 22:03:57 · 700 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)
OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点。其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等。支持驱动框架HDF(Hardware Driver Foundation),统一驱动标准,为设备厂商提供了更统一的接入方式,使驱动更加容易移植,力求做到一次开发,多系统部署。原创 2024-09-18 21:41:01 · 1389 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——子系统开发内核
用户最常见到并与之交互的操作系统界面,其实只是操作系统最外面的一层。操作系统最重要的任务,包括管理硬件设备,分配系统资源等,我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模块,业界一般称之为操作系统“内核”。OpenHarmony的Linux内核基于开源Linux内核LTS分支演进,在此基线基础上,回合CVE补丁及OpenHarmony特性,作为OpenHarmony Common Kernel基线。针对不同的芯片,各厂商合入对应的板级驱动补丁,完成对OpenHarmony的基线适配。原创 2024-09-18 20:59:30 · 1273 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统方案之扬帆移植案例
本文以OpenHarmony 3.0为基础,讲解基于HDF(Hardware Driver Foundation)驱动框架开发的Audio驱动框架,包括Audio驱动的架构组成、功能部件的实现和服务节点详细介绍。音频驱动框架模型,向上服务于多媒体音频子系统,便于系统开发者能够更便捷的根据场景来开发应用。向下服务于具体的设备厂商,对于Codec和DSP设备厂商来说,可根据ADM模块提供的向下统一接口适配各自的驱动代码,就可以实现快速开发和适配HOS系统。接收lib层的控制指令并将控制指令分发到驱动层。原创 2024-09-18 20:13:09 · 1971 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(下)
OpenHarmony Camera驱动模型结构HDI Implementation:对上实现HDI接口,向下调用框架层的接口,完成HDI接口任务的转发。Buffer Manager:屏蔽不同内存管理的差异,为子系统提供统一的操作接口,同时提供buffer轮转的功能。Pipeline Core:解析HCS配置完成pipeline的搭建,调度pipeline中的各个node完成流的处理Device Manager:通过调用底层硬件适配层接口,实现查询控制底层设备、枚举监听底层设备的功能。原创 2024-09-18 17:18:20 · 1718 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(上)
本文章是基于瑞芯微RK3566芯片的khdvk_3566b开发板,进行标准系统相关功能的移植,主要包括产品配置添加,内核启动、升级,音频ADM化,Camera,TP,LCD,WIFI,BT,vibrator、sensor、图形显示模块的适配案例总结,以及相关功能的适配。二级启动简单来说就是将之前直接挂载sytem,从system下的init启动,改成先挂载ramdsik,从ramdsik中的init 启动,做些必要的初始化动作,如挂载system,vendor等分区,然后切到system下的init。原创 2024-09-18 16:24:35 · 2178 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)
调试AP模块时,无法正常开启AP功能的解决方法。原创 2024-09-18 15:04:45 · 2105 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(上)
主要完成Codec/DMA/I2S驱动注册,使得ADM可以加载驱动节点;并注册ADM与Drivers交互的接口函数主要完成ADM Drivers adapter接口函数的实现,以及Codec_config.hcs/dai_config.hcs等配置信息的获取,并注册到对应的设备ADM Drivers impl可以直接阅读硬件手册,完成驱动端到端的配置;也可以借用Linux原生驱动实现与接口,减少开发者工作量。原创 2024-09-18 14:29:40 · 1577 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统STM32MP1芯片移植案例
配置产品加载驱动,产品的所有设备信息被定义在源码文件//vendor/bearpi/bearpi_hm_micro/hdf_config/device_info/device_info.hcs中。moduleName要与驱动文件中定义的相同,deviceMatchAttr要与驱动私有配置信息文件gpio_config.hcs中定义match_attr的相同。系统启动时会根据//vendor/bearpi/bearpi_hm_micro/init_configs中的启动配置来启动系统。原创 2024-09-18 14:09:52 · 900 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——Combo解决方案之W800芯片移植案例
文件下,描述了产品使用的内核、单板、子系统等信息。其中,内核、单板型号、单板厂商需提前规划好,是预编译指令hb set关注的。"product_name": "neptune_iotlink_demo", --- 产品名"ohos_version": "OpenHarmony 3.1", --- 使用的OS版本"type":"mini", --- 系统类型: mini"version": "3.0", --- 系统版本: 3.0。原创 2024-09-14 22:16:46 · 1149 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统STM32F407芯片移植案例
bootstrap_lite部件会编译//base/startup/bootstrap_lite/services/source/bootstrap_service.c,该文件中,通过SYS_SERVICE_INIT将Init函数符号灌段到__zinitcall_sys_service_start和__zinitcall_sys_service_end中,由于Init函数是没有显式调用它,所以需要将它强制链接到最终的镜像。6.由于_write函数会与kernel的文件操作函数重名,会导致编译失败。原创 2024-09-14 21:04:08 · 2045 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(三)
以vendor/chipsea/iotlink_demo为例,这里描述了产品使用的内核、单板、子系统等信息。其中,内核、单板型号、单板厂商需要提前规划好,也是预编译指令所关注的信息。这里填入的信息与规划的目录相对应。"product_name": "iotlink_demo", --- 产品名"version": "3.0", --- 系统版本:3.0"device_company": "chipsea", --- 单板厂商:chipsea。原创 2024-09-14 20:21:58 · 1406 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(二)
以为例,这里描述了产品使用的内核、单板、子系统等信息。其中,内核、单板型号、单板厂商需要提前规划好,也是预编译指令(hb set)所关注的。这里填入的信息与规划的目录相对应。"product_name": "wifi_demo", --- 产品名"type": "mini", --- 系统类型: mini"version": "3.0", --- 系统版本: 3.0"device_company": "lango", --- 单板厂商:lango。原创 2024-09-14 17:34:16 · 1713 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(一)
huks部件适配时,huks_key_store_path配置选项用于指定存放秘钥路径,ohos_security_huks_mbedtls_porting_path配置选项用于指定进行mbedtls适配的目录,用于芯片对mbedtls进行硬件随机数等适配。graphic配置文件见 //vendor/bestechnic/display_demo/graphic_config/product_graphic_lite_config.h。在本次适配过程中,将其调整为0x1000。原创 2024-09-14 16:44:55 · 2205 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量和小型系统三方库移植指南(二)
其中OHOS_SYSROOT_PATH需用绝对路径指定出sysroot所在目录,以OpenHarmony为例即源码根目录下out/hispark_xxx/ipcamera_hispark_xxx/sysroot目录的绝对路径。yxml库添加的过程除了适配文件build.gn和config.gni有些许变化外,其他和double-conversion库完全一致,参考CMake方式组织编译的库移植的配置过程。10.后台任务(Background Task)管理。6.三方应用调用管控机制。yxml编译生成目录。原创 2024-09-14 16:19:29 · 1319 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——轻量和小型系统三方库移植指南(一)
本文为OpenHarmony开发者提供一些组织编译形式比较常见(CMakeLists、Makefile)的三方库的移植指南,该指南当前仅适用于Hi3516DV300和Hi3518EV300两个平台,文中着重介绍各编译组织方式下工具链的设置方法以及如何将该库的编译添加到OpenHarmony整个工程的构建中。原创 2024-09-14 15:35:12 · 1313 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统移植指南(二)Linux内核
本文面向希望将OpenHarmony移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带Linux内核的现有能力,快速移植OpenHarmony到三方芯片平台的方法。原创 2024-09-14 14:53:18 · 1583 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——标准系统移植指南(一)
本文以移植名为MyProduct的开发板为例讲解移植过程,假定MyProduct是MyProductVendor公司的开发板,使用MySoCVendor公司生产的MySOC芯片作为处理器。在名称的目录下创建一个config.json文件,该文件用于描述产品所使用的SOC 以及所需的子系统。配置如下:},...主要的配置内容配置项说明(必填)产品名称version(必填)版本type(必填)配置的系统级别,包含(small、standard等)target_cpu。原创 2024-09-14 14:09:17 · 1396 阅读 · 0 评论 -
OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(三)驱动移植
驱动主要包含两部分,平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等;器件驱动则主要包含通常在SOC外的器件,如 LCD、TP、WLAN等图1OpenHarmony 驱动分类HDF驱动被设计为可以跨OS使用的驱动程序,HDF驱动框架会为驱动达成这个目标提供有力的支撑。开发HDF驱动中,请尽可能只使用HDF驱动框架提供的接口,否则会导致驱动丧失跨OS使用的特性。在开始驱动开发前,建议先了解HDF驱动框架。原创 2024-09-14 13:42:23 · 1135 阅读 · 0 评论