Linux
文章平均质量分 71
嵌入式Linux系统开发
熟悉硬件、STM32单片机、嵌入式 Linux、Android。
展开
-
Linux 内核启动流程之 start_kernel
Linux 内核启动流程原创 2023-01-02 15:18:53 · 302 阅读 · 0 评论 -
Git 最全教程
Git 诞生于 2005 年,是一款免费、开源、分布式版本控制系统。原创 2022-07-09 16:48:35 · 306 阅读 · 0 评论 -
Linux 系统调用
asmlinkage 限定词,这是一个编译指令,通知编译器仅从栈中提取该函数的参数。函数返回 long,为了保证 32 位和 64 位系统的兼容,系统调用在用户空间和内核空间有不同的返回值类型,在用户空间为 int,在内核空间为 long。note:假设系统调用在内核空间定义为 sys_ioctl,那么该系统调用的用户空间接口为 ioctl/include/linux/syscalls.h......原创 2022-07-01 21:29:44 · 758 阅读 · 0 评论 -
I2C 子系统(四):I2C debug
I2C debug 全解原创 2022-06-19 16:46:22 · 1312 阅读 · 0 评论 -
I2C 子系统(三):I2C Driver
一文带你搞懂 Linux I2C Driver原创 2022-06-19 16:45:29 · 1213 阅读 · 0 评论 -
I2C 子系统(二):I3C spec
一文带你了解 I3C原创 2022-06-19 16:43:02 · 3820 阅读 · 1 评论 -
I2C 子系统(一):I2C spec
一文带你搞懂 I2C spec原创 2022-06-19 16:41:48 · 1051 阅读 · 0 评论 -
动态库与静态库的使用
库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在 Linux 下有静态库和动态库。因此编译出来的体积就比较大。静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。因此编译出来的体积就比较大。以 lib 开头,以.a 结尾动态库(动态库也叫共享库)在程序编译的时候不会被链接到目标代码里面,而是在程序运行的时候被载入的。所以程序在运行的时候需要动态库了。因此编译出来的体积就比较小。以 lib 开头,以.so 结尾。静态库的制作步骤:编写或准备库的源原创 2022-04-24 19:26:26 · 2022 阅读 · 0 评论 -
Linux input 子系统
按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了 input 框架,用户只需要负责上报输入事件,比如按键值、坐标等信息,input 核心层负责处理这些事件。input 子系统1、input 子系统简介input 就是输入的意思,因此 input 子系统就是管理输入的子系统,和 pinctrl 和 gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。比如原创 2022-04-18 22:25:44 · 630 阅读 · 1 评论 -
手把手教你使用 i2c-tools
i2c-tools 简介在嵌入式开发中,有时候需要确认硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C总线的工具:i2c-tools。i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以读写I2C设备寄存器。调试新的设备驱动时,难免要反复修改寄存器,然后看结果现象。传统的做法是修改驱动代码寄存器值->编译->下载->运行->看结果,这一过程比较费时间,而每次需要改的可能只是1个bit,这种情况下 i原创 2022-04-18 22:24:50 · 8436 阅读 · 2 评论 -
SPI driver
SPI 相关源文件目录:kernel-4.14/drivers/spi/spi.c Linux 提供的通用接口封装层驱动kernel-4.14/drivers/spi/spidev.c linux 提供的 SPI 通用设备驱动程序kernel-4.14/drivers/spi/spi-mt65xx.c IC 厂商提供的 SPI 控制器驱动,不同厂商命名不同kernel-4.14/include/linux/spi/spi.h 头文件,包含 SPI 的主要数据结构和函数以上文件对应如下 S原创 2022-04-18 22:23:32 · 490 阅读 · 0 评论 -
SPI spec
SPI:Serial Perripheral Interface,串行外围设备接口,由 Motorola 公司提出,是一种高速、全双工、同步通信总线。SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,无应答机制。一般 SPI 需要 4 根线,但是也可以使用三根线(单向传输),本文我们讲解标准的 4 线 SPI,这四根线如下:①、CS/SS,Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。I2C 主机是通过发送从机设备地址来选择需要进行通信的从原创 2022-04-18 22:22:31 · 607 阅读 · 0 评论 -
I2C协议精讲(二):I2C上拉电阻计算
I2C 总线能挂多少设备?理论上:7-bit address :2 的 7 次方,能挂 128 个设备。10-bit address :2 的 10 次方,能挂 1024 个设备。当然,要把预留设备地址去除,7 bit 协议规定了 8个预留地址,厂商不可以使用。保留地址如下:但是I2C协议规定,总线上的电容不可以超过 400pF。管脚都是有输入电容的,PCB上也会有寄生电容,所以会有一个限制。实际设计中经验值大概是不超过8个器件。总线之所以规定电容大小是因为,I2C 使用的GPIO为开漏结构,原创 2021-12-06 21:45:25 · 11000 阅读 · 0 评论 -
I2C协议精讲(一):I2C bus spec
I2C 系列文章主要分为两个部分来写:1、I2C bus spec:专注于 I2C 协议本身,研究它的传输机制,硬件相关。2、I2C driver:研究 I2C 的软件驱动,包括总线驱动和设备驱动两部分。I2C IntroductionI2C:Inter-Integrated Circuit,集成电路总线。由 Philips 公司在 1982 年为主机板、嵌入式系统开发的一种简单、双向二线制同步串行总线。 Philips 半导体事业部就是现在的 NXP。2006 年 11 月,I2C 的专利已经到原创 2021-12-06 21:39:24 · 942 阅读 · 0 评论 -
platform 驱动框架
所谓的 platform 驱动并不是独立于字符设备驱动、块设备驱动和网络设备驱动之外的其他种类的驱动。platform 只是为了驱动的分离与分层而提出来的一种框架,其驱动的具体实现还是需要字符设备驱动、块设备驱动或网络设备驱动。/* 设备结构体 */ struct xxx_dev{ struct cdev cdev; /* 设备结构体其他具体内容 */}; struct xxx_dev xxxdev; /* 定义个设备结构体变量 */ static int xxx_open原创 2021-05-24 20:20:23 · 413 阅读 · 0 评论 -
内核源码树
Linux5.8.14原创 2021-01-11 18:59:25 · 194 阅读 · 0 评论 -
虚拟机问题汇总
1、虚拟机中的代码,注意clean后再打包(这样能小1G)2、虚拟机权限问题:若在虚拟机中用root权限编译文件,但是你在windows里面改,windows里面是通过samba连接的Linux,samba没有root权限,这时候要不你给文件夹 chmod 777 -R XXX要不你给samba root权限1、管理员身份运行VMware2、打开虚拟机3、账户ccs 密码 14、sudo su 进入root模式6、ifconfig 看虚拟机IP地址7、Xshell 通过IP地址原创 2020-11-01 16:48:51 · 372 阅读 · 0 评论 -
网络驱动器如何映射到根目录
ubuntu一般在 /etc/samba/smb.confvi /etc/samba/smb.conf然后增加一个root访问增加完后记得重启(smba是需要自己装的服务)映射完后如图(linux系统根目录)原创 2020-11-01 16:44:54 · 932 阅读 · 0 评论 -
linux下man的使用
若用到函数,不知道他怎么用,在linux中用:man mmap 即可查看编程手册,主要看包含头文件和函数原型不过有时候你要查看open,打开文件的函数,要输入:man 2 open原创 2020-10-19 11:17:33 · 171 阅读 · 0 评论 -
使用FileZilla上传文件到服务器,上传失败
文件夹权限的问题修改之前修改之后即可传输原创 2020-10-19 11:02:37 · 428 阅读 · 0 评论 -
linux内核代码中的字模
用Source Insight打开linux内核源码,搜索font,会发现有各种点阵字模。打开8*16的字模哈哈,是不是看起来是象形文字,这就是LCD屏幕显示字符的底层原理,就是一个灯的亮灭。原创 2020-10-18 21:06:50 · 310 阅读 · 0 评论 -
记录学习:韦东山第三期_字符编码_第二篇
1、普通外国人,用的数字和字母有限,1Byte可以表示完全,根据ASCII表。如下:2、后来因为中国人要用汉字,所以引入了GB2312编码表,国标(6000多个汉字)。一个汉字用2个Byte表示。如下:随后又扩展了GBK,扩展编码,能够达到几万个汉字。3、然后呢,港澳台同胞也要用电脑,是繁体字,所以制定了BIG5标准,也是2个Byte表示一个汉字,但内部编码和GB2312不一样。也就是说,即便内部都是d6 d0,但是BIG5里面是其他汉字,这就导致从台湾过来的文档,在大陆打开会乱码。4、由于想原创 2020-10-18 18:30:20 · 285 阅读 · 0 评论 -
记录学习:韦东山第三期_数码相框框架_第一篇
数码相框框架两个进程,其下多个线程。原创 2020-10-18 17:22:27 · 494 阅读 · 0 评论 -
无操作系统时的设备驱动和有操作系统时的设备驱动
原创 2020-10-09 12:02:39 · 361 阅读 · 0 评论 -
线程池精讲(pthread pool)
线程池也是多线程的处理方式。是将“生产者”线程提出任务添加到“任务队列”,然后一些线程自动完成“任务队列”上的任务。多线程编程,创建一个线程,指定去完成某一个任务,等待线程的退出。虽然能够满足编程需求,但是当我们需要创建大量的线程的时候,在创建过程以及销毁线程的过程中可能会消耗大量的CPU.增加很大开销。如: 文件夹的copy WEB服务器的响应。 。。。。 。。。。 线程池就是用来解决类似于这样的一个问题的,可以降低频繁地创建和销毁线程所带来地开销。线程池技术思路: 一般原创 2020-09-25 20:26:49 · 1281 阅读 · 0 评论 -
关于驱动程序与BSP的区别
BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。BSP是所有与硬件相关的代码体的集合。BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位。BSP就看成BIOS+驱动或者bootloader+驱动BSP和驱动的区别:bsp还包括了bootloader,或原创 2020-09-13 11:19:03 · 17515 阅读 · 0 评论 -
gzip: stdin: invalid compressed data--format violated
这个错误提示的是资源不完整。我发现是关于我上传文件的方式有问题,我是上传到虚拟机,直接拖进去的。建议在windows和linux之间互传文件的时候,以压缩包的方式比较好。原创 2020-08-24 14:13:48 · 1680 阅读 · 0 评论 -
cann‘t creat file 拒绝访问
在linux下checkout的目录,在windows下svn update时,提示:Error: Can’t open file: 拒绝访问或者在虚拟机中文件,在windows中访问 Error: Can’t open file:… 拒绝访问原因:是由于权限的问题。解决方法:#chmod -R 777 XXXXX-R表示文件夹中递归...原创 2020-08-13 13:52:11 · 1676 阅读 · 0 评论 -
VMware打开虚拟机提示权限不足
vmware.exe 右键—>属性—>兼容性—>以管理员身份运行此程序,打勾。原创 2020-08-12 09:54:16 · 5285 阅读 · 0 评论 -
进程的三种基本状态及其转换
(1)就绪状态:进程已获得除CPU外的所有必要资源,只等待CPU时的状态。一个系统会将多个处于就绪状态的进程排成一个就绪队列。(2)执行状态:进程已获CPU,正在执行。单处理机系统中,处于执行状态的进程只一个;多处理机系统中,有多个处于执行状态的进程。(3)阻塞状态:正在执行的进程由于某种原因而暂时无法继续执行,便放弃处理机而处于暂停状态,即进程执行受阻。(这种状态又称等待状态或封锁状态)通常导致进程阻塞的典型事件有:请求I/O,申请缓冲空间等。一般,将处于阻塞状态的进程排成一个队列,有的系统还根据原创 2020-08-11 13:50:37 · 3014 阅读 · 0 评论 -
IIC和SPI优缺点
用哪种协议首先肯定是看这个芯片支持什么协议。其次再考虑如下:IIC不考虑电源和GND的情况下,两条线,SCL时钟线和SDA数据线,同一个IIC总线上可以挂载2^7-1一共127个设备,不过由于寄生电容的存在,挂载不了这么多,但就算挂载几个设备,也节省主控IO口资源。同一条IIC总线上,不同设备靠设备地址区分。由于只有两条线,所以是半双工通信,通信速度慢。SPI不考虑电源和GND的情况下,SPI有四根线,片选信号CS,时钟SCLK,主输入从输出MISO,主输出从输入MOSI。所以占用主控IO较原创 2020-08-04 10:50:31 · 2880 阅读 · 0 评论 -
notepad++列编辑功能
当时看韦东山视频的时候,看到了老师用notepad++编辑一列,感觉很方便,遂记录。在Notepad++中,按住Alt键之后,就处于列(编辑)模式了。比如,按住Alt键,此处从上到下,选择多列:类似于这样,与行选中类似,可以很方便删除相同的东西。参考https://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/index.htmlhttps://www.crifan.com/files/doc/docbook/rec_s原创 2020-08-03 17:12:59 · 1036 阅读 · 0 评论 -
secureCRT停止滚动
一、选项----会话选项----终端界面,把 “输出时滚动到底部” 前面的勾勾去掉。然后把滚动条拖到你想要的位置就行了二、ctrl + S 暂停ctrl + Q 重启小技巧:secureCRT中,选中即是复制。点击鼠标右键可以粘贴。...原创 2020-08-03 15:51:23 · 5300 阅读 · 0 评论 -
printf、printk格式化输出十六进制,不够补0
输出十六进制为 %x该语句出现于格式化输出时的格式字符串中。形式为“0x%08x”其中,0x为普通字符,输出的时候会原样输出为0x。%08x为整型以16进制方式输出的格式字符串,会把后续对应参数的整型数字,以16进制输出。08的含义为,输出的16进制值占8位,不足部分左侧补0。于是,如果执行printf(“0x%08x”, 0x1234);会输出0x00001234。04就是占4位,不够的左侧补0...原创 2020-07-15 11:29:14 · 8269 阅读 · 0 评论 -
printf、fprintf、dprintf、sprintf、snprintf、vprintf
printf、fprintf、dprintf、sprintf、snprintf均是格式化输出原型#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream, const char *format, ...);int dprintf(int fd, const char *format, ...);//Return: 输出字符的数量 if OK, 负数 if outp原创 2020-07-09 14:44:33 · 462 阅读 · 0 评论 -
海思平台入门1(基于海思Hi3559V200)
海思的影像类芯片Hi3559V200,可以开发行车记录仪,运动相机,监控摄像头。原版SDK源码如下,现在已经开发到5.0版本,这是1.5版本。主要目录功能介绍如下: build 目录提供 SDK 的全局编译配置,包括各组件的相对路径和基本配置。 configs 目录提供了通过 menuconfig 配置后生成的配置文件。 Kconfig 为 SDK menuconfig 的入口配置文件。 Makefile 为 SDK 的编译文件,用于编译安装 SDK 工程。 osd原创 2020-07-05 17:31:18 · 6938 阅读 · 3 评论 -
RAM、SRAM、DRAM、SDRAM、DDR SDRAM、ROM、PROM、EPROM、EEPROM、NAND、NOR
一、RAM:random access memory(随机存取存储器)SRAM:静态随机存储器,就是它不需要刷新电路,不像动态随机存储器那样,每隔一段时间就要刷新一次数据。但是他集成度比较低,不适合做容量大的内存,一般是用在处理器的缓存里面。像S3C2440的ARM9处理器里面就有4K的SRAM用来做CPU启动时用的。DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。 而且是行列地址复用的,许多都有页模式。SDRAM:同步动态随机存储器,像电脑的内存就是用的这种RAM叫DDR SDRAM。其原创 2020-06-29 12:10:45 · 1507 阅读 · 0 评论 -
查看linux服务器使用情况
在公司中,有时候会发现服务器非常卡,想看一下谁在占用服务器cp或者压缩,可以用top命令原创 2020-06-19 16:59:31 · 765 阅读 · 0 评论 -
make clean与make distclean的区别
make clean仅仅是清除之前编译的可执行文件及配置文件。而make distclean要清除所有生成的文件。原创 2020-06-11 11:25:34 · 196 阅读 · 0 评论 -
Linux内核源码框架(图)
Linux2.6内核代码层次结构原创 2020-04-19 22:14:33 · 445 阅读 · 0 评论