
linux
文章平均质量分 88
福哥哥哥
这个作者很懒,什么都没留下…
展开
-
linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合
1. 前言按理说,kernel中gpio subsystem和pinctrl subsystem的关系应该非常清楚:pinctrl subsystem管理系统的所有管脚,GPIO是这些管脚的用途之一,因此gpio subsystem应该是pinctrl subsystem的client(也可叫做backend、consumer),基于pinctrl subsystem提供的功能,处理GPIO有关的逻辑。不过,实际情况却不是这么简单,它们之间有着较为紧密的耦合(看一看kernel中pinct.原创 2021-09-24 17:30:28 · 479 阅读 · 0 评论 -
linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
1. 前言本站之前的三篇文章[1][2][3]介绍了pin controller(对应的pin controller subsystem)、gpio controller(对应的GPIO subsystem)有关的基本概念,包括pin multiplexing、pin configuration等等。本文将基于这些文章,单纯地从pin controller driver的角度(屏蔽掉pinctrl core的实现细节),理解pinctrl subsystem的设计思想,并掌握pinctrl驱动的移植和实原创 2021-09-24 17:28:25 · 949 阅读 · 0 评论 -
Linux内核中的GPIO系统之(3):pin controller driver代码分析
一、前言对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中),主要功能包括:(1)pin multiplexing。基于ARM core的嵌入式处理器一般会提供丰富的功能,例如camera interface、LCD interface、USB、I2C、SPI等等。虽然处理器有原创 2021-09-24 17:26:20 · 1126 阅读 · 0 评论 -
linux内核中的GPIO系统之(2):pin control subsystem
一、前言在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况:(1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码。例如:在bootloader中建立一个大的table,描述各个引脚的配置和缺省状态。此外,由于SOC的引脚是可以复用的,因此在各个具体的driver中,也可能会对引脚进行的配置。这些工作都是比较繁琐的工作,需要极大的耐心和细致度。(2)发现某个driver不能正常工作,辛辛苦苦debug后发现仅仅是因为其他的dr原创 2021-09-24 17:24:23 · 767 阅读 · 0 评论 -
linux内核中的GPIO系统之(1):软件框架
一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议,不过,对于软件抽象而言,其分层次的软件思想是每个嵌入式软件工程师需要掌握的内容。我更倾向使用GPIO系统这个名字来代替GPIO d原创 2021-09-24 17:21:11 · 540 阅读 · 0 评论 -
Linux DTS入门知识
一、dts产生原因.............................................................................................................................................2二、dts基本知识..............................................................................................原创 2021-09-18 09:48:37 · 907 阅读 · 0 评论 -
Linux内核之 module_init解析 (下)
从上一篇博文http://blog.youkuaiyun.com/richard_liujh/article/details/45669207介绍了module_init宏函数,简单来说上篇博文介绍module_init如何注册驱动的init函数,这篇博文将详细分析kernel启动过程又是如何执行我们注册的init函数。如果了解过linux操作系统启动流程,那么当bootloader加载完kernel并解压并放置与内存中准备开始运行,首先被调用的函数是start_kernel。start_kernel函数顾名思义,转载 2021-08-25 17:15:52 · 302 阅读 · 0 评论 -
linux内核驱动 之 module_init解析 (上)
原文链接:https://blog.youkuaiyun.com/Richard_LiuJH/article/details/45669207写过linux驱动的程序猿都知道module_init() 这个函数。那么我们来了解一下module_init这个函数的具体功能和执行过程在kernel源码目录中找到include\linux\init.h文件/*** module_init() - driver initialization entry point* @x: function to be..转载 2021-08-25 17:09:13 · 555 阅读 · 0 评论 -
Linux设备驱动之usb设备驱动详解
原文地址:http://blog.youkuaiyun.com/chenjin_zhong/article/details/63293161.Linux usb设备驱动框架USB是通用串行总线的总称,Linux内核几乎支持所有的usb设备,包括键盘,鼠标,打印机,modem,扫描仪。Linux的usb驱动分为主机驱动与gadget驱动。前者是设备连接到计算机上,通过主机驱动扫描usb设备,控制所连接的设备。而gadget驱动一般用于嵌入式设备,gadget驱动用于控制嵌入式设备。Linux的usb驱动两种类型图原创 2021-08-06 18:15:53 · 2014 阅读 · 0 评论 -
Linux 开机引导和启动过程详解
转自:http://www.linuxidc.com/Linux/2017-08/146494.htm你是否曾经对操作系统为何能够执行应用程序而感到疑惑?那么本文将为你揭开操作系统引导与启动的面纱。理解操作系统开机引导和启动过程对于配置操作系统和解决相关启动问题是至关重要的。该文章陈述了 GRUB2 引导装载程序开机引导装载内核的过程和 systemd 初始化系统执行开机启转载 2018-01-12 17:13:24 · 716 阅读 · 0 评论 -
Haproxy+Keepalived主主高可用
介绍HAProxy是高性能的代理服务器,其可以提供7层和4层代理,具有healthcheck,负载均衡等多种特性,性能卓越,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。KeepAlived是一个高可用方案,通过VIP(即虚拟IP)和心跳检测来实现高可用。其原理是存在一组(两台)服务器,分别赋予Master,Backup两转载 2015-05-13 16:29:30 · 577 阅读 · 0 评论 -
Linux下的多线程编程
http://blog.chinaunix.net/uid-1849361-id-2825470.html1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到 *** 作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多转载 2015-04-01 10:52:55 · 561 阅读 · 0 评论 -
Linux C Socket编程原理及简单实例
部分转自:http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 有很多的框架,为什么还在从Socket开始?5. Linux C Socket简单示例 1.什么是TCP/IP、转载 2015-03-31 23:32:21 · 484 阅读 · 0 评论 -
linux c学习笔记----TCP基础客户/服务编程(socket,bind等)
socket(建立一个socket通信) 相关函数 accept,bind,connect,listen表头文件 #include#include定义函数 int socket(int domain,int type,int protocol);函数说明 socket()用来建立一个转载 2015-03-31 23:36:08 · 687 阅读 · 0 评论 -
linux和window当前目录
window中,默认就是当前目录,比如程序中打开“data/temp.txt”,那么要打开的就是当前目录下 data目录下面的temp.txtlinux下,你必须要指明当前目录,“./ data/temp.txt" 否则程序就会出错,这个问题,弄了我半天。这个问题是由于环境变量引起的windows默认把.目录也就是当前目录加入了环境变量linux则没有,自己手动原创 2014-05-27 16:39:27 · 693 阅读 · 0 评论 -
ubuntu下编写c语言程序
建议使用gcc,linux下也有像vc的可视化开发工具如:Qt,Eclipse,Codeblock,一般gcc比较方便,属于命令行,可以编译C,C++,具体是:第一步:打开终端,随便进入一个文件夹用于存放你编写的程序 #cd /home/usr/workspace #vi Hello.c 接着你就会看到vi编辑器,按I开始输入,接原创 2014-05-27 14:13:57 · 1004 阅读 · 0 评论 -
ubuntu中apt-get的默认安装路径
apt-get 下载后,软件所在路径是什么??/var/cache/apt/archivesubuntu 默认的PATH为PATH=/home/brightman/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesapt-get install安装目录是包的维护者确定原创 2014-05-27 13:40:06 · 621 阅读 · 0 评论 -
VMware虚拟机中的ubuntu硬盘扩容
1、通过vm的UI界面进行扩容基本上是不行的,至少在我的版本上是这样,各种灰色按钮,各种出错;并且,界面扩容失败后若打不开虚拟机,不要慌,只要你扩容之前的那个硬盘文件(我的是ubuntu64.vmdk,全编一个android项目后39G)还在,基本上是可以恢复的,一定要有耐心哟。另外,如果不是服务器级的硬盘,就不要使用快照了,感觉这个功能很坑爹,非常吃硬盘不说,关键是当它吃完你的硬盘后,你想删除快转载 2014-05-23 11:25:28 · 699 阅读 · 0 评论 -
语音识别工具包pocketsphinx-0.8声学模型训练
2012年12月份,CMU大学更新pocketsphinx工具包,最新版本已经是0.8了。下载下来尝试了一下,发现对于声学模型的训练比之前方便多了。下面简单介绍一下新版本声学模型的训练过程:1:安装新版本的Pocketsphinx-0.8下载地址:http://cmusphinx.sourceforge.net/wiki/download/在Linux下转载 2014-06-06 15:39:56 · 1740 阅读 · 0 评论