
linux编程
文章平均质量分 83
主要有关linux以及linux应用编程
Ian22l
这个作者很懒,什么都没留下…
展开
-
###转####LDR指令
作者:嵌入式大玩家链接:https://www.jianshu.com/p/66d801c85ee9来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。LDR指令的格式:LDR{条件} 目的寄存器 <存储器地址>作用:将 存储器地址 所指地址处连续的4个字节(1个字)的数据传送到目的寄存器中。LDR指令的寻址方式比较灵活,实例如下:LDR R0,[R1]转载 2020-07-24 15:05:47 · 507 阅读 · 0 评论 -
lk传递内核参数解析
参考链接:https://blog.youkuaiyun.com/skyflying2012/article/details/41142801(1)早期参数解析:parse_early_param(init/main.c)—>parse_early_options(tmp_cmdline)—>parse_args(“early options”, cmdline, NULL, 0, 0, 0, do_early_param);parse_args函数实现如下:.路径:/kernel/params.原创 2020-07-24 14:57:36 · 839 阅读 · 0 评论 -
linux系统LCD驱动(三):mtk lcd驱动lcm的加载以及初始化
上一篇博文(linux系统LCD驱动(二):mtk lcd驱动fb_info初始化)https://blog.youkuaiyun.com/Ian22l/article/details/105929192 提到mtkfb_probe除了进行fb_info的初始化外,还进行lcm的初始化以及lcm底层驱动的接口获取。static int mtkfb_probe(struct platform_device *...原创 2020-05-05 14:54:39 · 2974 阅读 · 0 评论 -
linux系统LCD驱动(二):mtk lcd驱动fb_info初始化
这一篇博文承接上一篇博文“系统lcd驱动(-)”(https://blog.youkuaiyun.com/Ian22l/article/details/105927936),这篇博文讲的是mtk的lcd驱动一部分。上一篇讲到在移植或者调试的时候需要填充fb_info对象信息并且进行register_framebuffer进行注册。那么mtk的lcd驱动便是实现这一部分的逻辑。首先从mtkfb_probe进行...原创 2020-05-05 11:43:23 · 1677 阅读 · 0 评论 -
linux系统LCD驱动(一)
出来工作两年,随着工作的深入,一直很少有时间写博客,并且随着工作各种零碎的调试,有时候很容易忘记自己所学的一些东西,近期就像用写博客来巩固自己刚入门时的一些基础知识以及往后学到的一些知识。linux系统lcd驱动也称framebuff驱动,驱动框架如下图:应用程序通过打开设备节点dev/graphics/fbX,然后通过字符设备访问的方式访问lcd驱动。fbmem.c便是向系统注册一个字符设...原创 2020-05-05 10:31:45 · 1094 阅读 · 0 评论 -
Android P 储存设备挂载
整体框架设计:kernel中会对sd卡以及u盘设备进行检测,当有设备拔插时通过uevent发送给用户空间的vold进程,vold进程接收并解析kernel的uevent信息。vold通过sgdisk与blkid获取设备信息。接着vold会通过某种机制通知到上层framework.上层有设备插入,等待上层framework下发挂载命令给vold。vold接收到挂载命令后调用exfat或者ntfs...原创 2020-04-07 18:15:22 · 1674 阅读 · 0 评论 -
linux驱动编程之低分辨率定时
1.低分辨率定时(1)定时器结构体描述:struct timer_list { struct list_head list; unsigned long expires; unsigned long data; void (*function)(unsigned long); };双向链表元素list:用来将多个定时器连接成一条双向循环队列。ex...原创 2020-03-24 16:33:55 · 384 阅读 · 0 评论 -
linux 配置adb
第一步:安装adb工具sudo apt-get install android-tools-adb第二步:确认设备的id通过拔插前后usb来确认(1)usb设备插入前,使用命令lsusb查看linux@linux-PC:/media/linux/_dde_data/codes$ lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundatio...原创 2020-03-02 13:23:11 · 2422 阅读 · 0 评论 -
linux sublime text安装跳转
第一步:安装package control(如已经安装则跳过)(1)打开tools—>CommandPalette(2)找到package control并点击安装,如图红色框中(3)点击确定安装便可以(4)安装完成后,关闭sublime再进入点击preferences是package control便成功安装第二步:安装ctags插件(1)(2)(3)(4)...原创 2020-03-02 10:17:01 · 285 阅读 · 0 评论 -
linux多个兼容jdk版本
在安卓开发过程中经常需要多个兼容jdk版本,这是因为每个安卓版本需要的jdk都不一样,例如android6.0用的是jdk1.7,而android8.0用的是jdk1.8第一步:安装jdk1.7.x(1)创建文件夹jdkcd /opt && sudo mkdir jdk(2)复制jdk1.7压缩包 java-7-openjdk-amd64.zip 到/opt/jdk目录...原创 2020-02-27 15:06:50 · 809 阅读 · 0 评论 -
linux用户空间中的轮询应用epoll
在linux非阻塞轮询监听中,我们除了select之外还有epoll相关一系列的函数,起作用都是一样,只不过select函数在监听多个fd时,性能比较差,效率比较低。这里我们不说原理,其原理跟select差不多,上一节在select应用那里说过了,这里直接列举epoll的一些api以及实例。1.epoll 相关apiint epoll_create(int size)//返回值为fd文件描述...原创 2020-02-23 21:29:06 · 309 阅读 · 0 评论 -
linux用户空间中的轮询应用select
linux编程过程中需要对多个文件描述符进行读,写,异常等进行监听。目前提供的方法有select,poll,epoll等。1.select的原理把需要进行监听文件描述符fd进行分类,并形成一个集合叫做文件描述符集合,文件描述符一般分为读文件描述符集合,写文件描述符集合,异常文件描述符集合,然后再对其进行监听。select会对监听文件描述符集合中的进行轮询查找符合该类文件描述符集合的操作并且返回...原创 2020-02-23 16:12:36 · 469 阅读 · 0 评论 -
linux设备驱动编程之同步
1 linux设备驱动同步的方法如上图,Linux设备驱动在编程中同步的代码逻辑都是一个进程(例如进程1)在阻塞等待才可以进入想要访问代码区1,而另一进程(如进程2)负责当执行完代码区2后,具备了唤醒进程1的条件后便会唤醒进程1,然后进程1继续执行代码区1。整过过程叫做进程间信息同步。完成同步的方法目前linux设备驱动编程中主要有有如下两种:(1)信号量//头文件:#include &...原创 2020-02-15 20:19:55 · 320 阅读 · 0 评论 -
Linux设备驱动编程之信号量用作互斥
1.信号量用来做共享资源保护当获取信号量down时候会进行两步操作:(1)s=s -1//信号量值-1(2)if(s>=0)为真则进程继续执行,否则进入休眠阻塞。当释放信号量up的时候会执行s=s+1,信号值+1。那么如上图,当信号量用作互斥保护共享资源的时候,一般来说信号量初始化sem_init(&sem,1),也就是信号量初始化值为1。进程1首先获取信号量down(...原创 2020-02-13 22:30:54 · 188 阅读 · 0 评论 -
linux设备驱动编程之并发控制
1.什么是并发?(1)什么是并发?所谓的并发控制便是多个进程同时进行,并行的对内核资源(全局变量,静态变量等)访问而出现竞态。竞态简单的说就是两个或两个以上的进程同时访问一个资源,同时引起资源的错误.例如:如下图,按照进程1代码逻辑设计意图,赋值进程变量a为100,并且执行代码x,但是就在这时候进程1不知道进程2也在并发访问全局变量a并赋值为200,这样以来那么进程1的代码并不会执行.程序出...原创 2020-02-10 19:57:28 · 246 阅读 · 1 评论 -
linux设备驱动编写阻塞之等待队列应用2
1.等待队列应用有两种的写法(1)手动定义以及添加(2)自动定义以及添加第一种,手动定义以及添加方法(1)定义队列头wait_queue_head_t &my_queue;(2)定义队列以及添加到队列头中DECLARE_WAIT_QUEUE(name,curreut);add_wait_queue(&my_queue,&name);(3)判断条件是否满...原创 2020-02-09 23:24:51 · 220 阅读 · 0 评论 -
linux设备驱动阻塞等待队列应用1
1.实例原理期在回顾Linux设备驱动,看了宋宝华的书籍坐了学习记录。利用等待队列实现一个fifo。当fifo里面没有数据时,读进程A fifo要阻塞(所谓的阻塞就是当操作设备条件不满足时,进程进入休眠,直到条件满足后才访问设备并且成功返回),要等写进程B写进数据后才唤醒通知读进程A可以读取;同样当fifo已经写满后,写进程B要阻塞,要等读进程A读取后才唤醒通知写进程B可以写入。2.等待队列...原创 2020-02-09 23:23:04 · 206 阅读 · 0 评论 -
Linux字符设备驱动应用
Linux字符设备驱动的设备对象-linux字符设备结构体struct cdev { struct kobject kobj; /*内核内嵌Kobj对象 struct moudle *owner; /*所属模块*/ struct file_operations *ops;//文件操作结构体 struct list_head list;//链表头 cdev_t cdev;//设备号 u...原创 2019-12-31 01:35:44 · 175 阅读 · 0 评论 -
Linux内核模块加载应用
一:Linux内核模块组成部分1.linux内核模块加载2.linux内核模块卸载3.linux内核许可证声明(GPL,GPLv2)4.Linux内核模块参数5.Linux内核模块导出符号6.linux作者声明等信息1.Linux内核模块加载(1)加载模块命令:(用户空间Linux内核模块的加载)insmod $module_name(2)模块加载的时候最终调用到模块初始化函...原创 2019-12-29 21:55:55 · 732 阅读 · 0 评论 -
Linux内核下载以及编译
今天没事无聊直接上管网(https://www.kernel.org/)下载了longterm版本版本linux-4.14.157。解压linux-4.14.157.tar.xz首先将tar.xz解压成tarsudo xz -d linux-4.14.157.tar.xz 接着将解压tarsudo tar -vxf linux-4.14.157.tar安装编译内核的依赖环境(...原创 2019-12-01 22:53:36 · 733 阅读 · 0 评论