操作系统
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
树莓派系统(BCM283x)的启动过程
树莓派主控芯片BCM283x的启动过程https://www.raspberrypi.org/documentation/hardware/computemodule/cm-peri-sw-guide.mdBCM283x的启动过程BCM283x devices consist of a VideoCore GPU and ARM CPU cores. The GPU ...翻译 2020-04-19 10:46:32 · 1300 阅读 · 1 评论 -
海思平台(hi3559av100)异构多系统的使用Linux(2*A53+2*A73)+liteos(A53)+liteos(M7)
在文档《SDK安装及升级使用说明》中有对linux+liteos异构多系统的烧写有介绍。这里对其中的一些注意的地方记录以下,以备查验。由于我的目标是要搭建一个ISP调试环境,就是使用海思的ittp_stream工具能够连接上开发板,并能够实时查看摄像头的视频。首先要编译在A53UP上运行的liteos,根据文档《图像质量调试工具使用指南》的1.2.5上的内容,编译带有pq_strea...原创 2019-10-12 18:54:47 · 5479 阅读 · 0 评论 -
以busybox制作Linux根文件系统,以及nfs设置和uboot设置--嵌入式开发平台的搭建
主要分为3个部分rootfs相关文件创建及配置虚拟机网络地址及 nfs 服务配置开发板网络和环境变量配置1.rootfs相关文件创建及配置在安装好相应的交叉工具链后,下载busybox源码并解压。进入busybox的源码目录执行#make menuconfig需要配置的总体选项如下:Symbol: BUILD_LIBBUSYBOX [=y]//编译为共享库CRO...原创 2019-06-16 16:59:41 · 1516 阅读 · 0 评论 -
Linux中内核模块的单独编译以及makefile的模板介绍
Linux内核模块在编译的时候可以通过命令编译:make -C 内核源码绝对路径 M=模块源码文件所在的绝对路径 modules 此命令的解释:1)进入到内核源码目录2)读取内核源码目录的Makefile3)执行内核源码Makefile中的 modules 目标4)根据 modules 目标的命令编译M所指向的文件路径 Makefile指定 的 C文件如:ARM板的内核...原创 2019-06-25 22:05:22 · 3777 阅读 · 1 评论 -
linux内核模块的参数传递
模块安装时候可以给模块中的变量传递数值,安装后,模块中变量的值就是安装时所传入的值 ,没有传递的变量,则使用代码中默认值。带参数的模块安装后会生成目录:/sys/module/模块名/parameters/示例:如果安装 了名字为 hello_model_param 的模块,则会生成/sys/module/hello_model_param/parameters/这个文件夹下会生成...原创 2019-06-26 22:33:02 · 4150 阅读 · 0 评论 -
busybox init进程和/etc/inittab关系
嵌入式系统下的 linux 启动过程一般是:1. 在 bootloader 中制定各种要求传给 linux 内核的参数,制作 ramdisk 或 ramfs 文件系统,并在开机后首先 mount 上,该文件系统主要负责包含启动运行的配置文件,嵌入式系统主要是/etc/inittab 和/etc/rcS 文件;2. 在 init 进程启动后,进程首先执行/etc/inittab 文件,该文件语法...原创 2019-06-23 22:26:35 · 879 阅读 · 0 评论 -
Linux内核驱动字符设备-linux 2.6设备驱动模型
和misc杂项设备以及早期经典设备模型比较,有如下的特征:1. 安装后, 不会自动创建/dev/设备文件节点, 需要手动使用 mknod 命令创建。可以使用设备类的方法自动创建设备节点。2. 调用一个 cdev_add 注册后, 指定数量的次号被占用完了。 数量可以自己指定,一个主设备可以使用cdev_add 函数注册多次。3. 设备号使用前需要先申请: register_chrdev_...原创 2019-06-29 16:53:16 · 341 阅读 · 0 评论 -
嵌入式linux系统快速启动优化的一些方法
嵌入式linux快速启动的一些优化的方法,主要是要掌握嵌入式linux系统的启动流程,以便能够在优化时有所指引。下面是一些总结:嵌入式linux系统快速启动的优化主要是硬件和软件。1硬件:1.1因为在系统启动的时候,cpu需要从flash或者是emmc中读取uboot,kernel和rootfs,以及app相关的代码,并且写入到内存ddr中。所以flash或者emmc及ddr的读写...原创 2019-08-20 20:52:38 · 1800 阅读 · 0 评论 -
linux内核信号量和互斥锁使用
信号量概念Linux 内核的信号量在概念和原理上与用户态的 System V 的 IPC 机制信号量是一样的,但是它绝不可能在内核之外使用,因此它与 System V 的 IPC 机制信号量毫不相干。信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为 1 就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。一个任务要想...原创 2019-09-01 11:29:08 · 2119 阅读 · 2 评论 -
安装软件时Ubuntu桌面的左边和上边的菜单栏消失的解决办法
背景:突然想着要在Ubuntu上安装一个有道翻译。不仅并没有安装成功,反而造成了Ubuntu桌面的左边和上边的菜单栏消失,右键没有open the terminal的选项。解决方法:Ctrl Alt F6 进入命令模式输入用户名aispeech-xyw,密码:命令行输入:sudo apt-get install compizconfig-settings-manager运行compi...原创 2019-06-11 09:32:34 · 2471 阅读 · 0 评论 -
hi3559v100的amp双系统初始化
双系统初始化概述:根据双系统业务部署规划,Huawei LiteOS 系统主要运行媒体服务,开机后先于 linux启动,不依赖于 Linux 端。而 Linux 系统主要运行人机交互、网络、录像、拍照、存储等业务,其中运行的录像、拍照等业务依赖于 Huawei LiteOS 系统中的媒体服务。根据启动顺序要求,在调试双系统业务时,建议先将 Huawei LiteOS 系统调试稳定,再来调试Li...原创 2019-06-06 18:58:45 · 1673 阅读 · 0 评论 -
Linux驱动编程API(原子操作,自旋锁,等待队列,延时,定时器,tasklet)
同一资源的并发访问:1.原子操作void atomic_set(atomic_t *v, int i);void atomic_add(int i, atomic_t *v);void atomic_sub(int i, atomic_t *v);void atomic_inc(atomic_t *v);int atomic_inc_and_test(atomic_t *...原创 2019-05-14 22:05:16 · 522 阅读 · 0 评论 -
rtos:zephyr工作队列的初始化
工作队列的初始化:#define MY_STACK_SIZE 512#define MY_PRIORITY 5K_THREAD_STACK_DEFINE(my_stack_area, MY_STACK_SIZE);struct k_work_q my_work_q;k_work_q_start(&my_work_q, my_stack_area, ...翻译 2019-03-09 09:58:14 · 296 阅读 · 0 评论 -
rtos:zephyr同步alerts(通知)
alert可以同linux平台下的signal。alert的初始化:方法1:extern int my_alert_handler(struct k_alert *alert);struct k_alert my_alert;k_alert_init(&my_alert, my_alert_handler, 10);方法2:extern int my_ale...翻译 2019-03-09 10:03:22 · 308 阅读 · 0 评论 -
linux内核中的以太网phy芯片的驱动介绍:以lan8720和ip101作为对比
背景:由于公司开发的新项目中设备需要联网,使用了MZ391的4G模块,并通过rmii接口和phy芯片ip101gr链接。主控平台rv1108通过rmii接口和phy芯片lan8720相连接。ip101gr和lan8720通过类似于以太网的双绞线:tx+,tx-,rx+,rx-,相连接。之所以mac和phy要分开,是因为mac属于数字电路部分,主要处理的信号是属于数字信号,将上层ip层等...原创 2019-03-09 16:15:44 · 15848 阅读 · 0 评论 -
rtos:zephyr的网络子系统的api接口介绍
初始化:在如果应用需要一个ipv4 的地址,如果一个DHCPv4被使能,应用程序开始之前,需要确定设备能够得到一个ipv4的地址。设置:在网络子系统中有多种选择,在应用开始之前工程里面需要一个配置文件,配置如:IP地址,IEEE802.15.4等。创建:创建一个TCP,udp的服务器和客户端。初始化:CONFIG_NET_APP_AUTO_INITCONFIG_NET_APP_INIT...翻译 2019-03-07 20:10:05 · 686 阅读 · 0 评论 -
linux内核使用pinctrl子系统实现操作gpio输出高低电平的实现
硬件平台:rv1108参考博客:https://blog.csdn.net/chenliang0224/article/details/78777995在内核中实现使用pinctrl子系统控制gpio主要实在两个方面:dts文件的节点的添加和驱动代码的编写。1.dts文件的修改dts的文件添加相应的dts节点信息主要是参考dts pinctrl的相关例子。毕竟每个平台的dts的具体...原创 2019-03-18 18:25:04 · 4247 阅读 · 2 评论 -
linux 中fdisk 和 mkfs.vfat命令的使用总结
fdisk:是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。由于emmc在系统启动后,分为了mmcblk0p1~mmcblk0p5 五个分区,其中mmcblk0p1是存放的vendor信息的分区。mmcblk0p2是IDBlock分区,存放的是loader.bin文件。mmcblk0p3是kernel分区,存放的是kernel.img文件。mmcblk0...原创 2019-03-23 16:05:52 · 17466 阅读 · 0 评论 -
rtos:zephyr同步互斥锁
配置选项和API:CONFIG_PRIORITY_CEILINGAPI:K_MUTEX_DEFINEk_mutex_init()k_mutex_lock()k_mutex_unlock()互斥锁在使用前需要初始化,并且初始化是为0.即没有上锁的状态。在多个线程访问共享资源时,使用互斥锁。互斥锁对象不是为ISR设计的。互斥锁的初始化:1.struct k_m...翻译 2019-04-01 16:43:01 · 561 阅读 · 0 评论 -
linux内核中模块间相互依赖的自动连接程序:modprobe外部程序和request_module()函数的分析
以下内容总结自《understanding the linux kernel》在Linux系统中一个包括但不限于驱动模块,可能需要一个或者多个其他的模块,这些模块又可能需要其他的模块。为了内核能够自动链接模块,内核需要创建一个内核线程来执行modprobe程序,该线程要考虑由于模块依赖所引起的所有可能因素。modprobe外部程序和insmod类似,链接在命令行中指定的一个模块。然而,mo...原创 2019-05-01 19:55:47 · 1381 阅读 · 0 评论 -
zephyr概述
以下的截图,是为SDK中的代码,支持的板子和网络上描述的一样。Zephyr 基于linux和wind river是一款小型且可伸缩的实时操作系统,尤其适用于资源受限的系统,可支持多种架构; Zephyr 基于已使用十多年、久经实际应用考验的 Wind River 代码库而构建。扩展原始代码包括几个关键步骤。首先,通过重构提升模块化水平。在编译时,开发人员可按需采用或删除任何子系统以适应硬件...原创 2019-03-06 15:53:37 · 8114 阅读 · 0 评论