自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (8)
  • 收藏
  • 关注

原创 嵌入式软件开发之------浅析 linux epoll(十四)

linux代码版本:linux4.4导读:在监控大量 fd 的时候,select 和 poll 有着明显的缺点:1. copy 所有的 fd 到内核 2. 活跃数不多的时候轮询方式效率低 3. 无法精确产生事件的 fd 。而 epoll 对这几个缺点有明显的改进:1. 开始的时候就将 fd 传递给内核,监控的时候不需要再 copy 到内核 2. 采用 event 的方式 3. 将产生事件的 fd 放入链表,直接查询该链表就行了。一、epoll先看一下 epoll 的几个接口函数:1. ...

2021-02-16 20:46:45 311 1

原创 嵌入式软件开发之------浅析 linux select/poll(十三)

linux代码版本:linux4.4导读:之前在学习 linux 驱动的时候,有涉及到 file->poll 成员,由用户态 select/poll 最终调用到,而 select 和 poll 又是用户态编程常用接口,当要对大量文件进行读写时,尤其是 socket ,只用read和write函数显然不是一个好的选择,但 select 和 poll 也有一些局限性,而 epoll 相比确实存在一些优势。下面就分析 select 和 poll 。一、poll 函数由于看着部分代码的时候,先..

2021-02-15 21:32:22 268 1

原创 嵌入式软件开发之------浅析 fork()函数(十二)

linux代码版本:linux4.4glibc代码版本:glibc-2.26导读:在linux内核态也搞了好几年了,公司的新平台也都转向了用户态,发展趋势也是linux的工作量也来越少,更多的工作也将聚焦在业务上。其实无论是在内核态还是用户态编程,对于嵌入式编程来说,没有本质区别,嵌入式产品上也不太会去做数据库等之类的应用,大多还是基于设备文件操作、进程通信、socket等实现业务逻辑。在...

2021-02-14 21:35:47 707

原创 嵌入式软件开发之------浅析 linux do_page_fault(十一)

Linux代码版本:linux4.4导读:玩linux编程终究都是绕不开内存管理部分内容。从开始接触 linux,都看到 copy on write 机制,当时也很好奇是如何实现的。在接触 dpdk 时,使用 hugepage 减少 tlb miss 以提升性能,以及用户态 malloc 时先返回地址,实际并未分配物理内存。随着工作时间的增加,这些知识不能再只停留在概念和会调接口的水平,需要深入linux 内核代码一窥究竟。下面就从 arm64 的代码开始学习。一、MMU相关知识从接触 linu

2021-02-14 11:26:59 1845

原创 嵌入式软件开发之------浅析制作ARMv8 native gcc 编译器(十)

导读:在学习嵌入式的时候,需要搭建 交叉编译 环境,也就是说在PC/服务器上编译嵌入式产品用的软件。或者具体点说,很多人开发的产品是基于ARM、MIPS的嵌入式设备,在自己的电脑上或服务器(通常是X86机器)使用交叉编译工具(gcc),来编译产品软件。网上也有很多交叉编译工具链的制作,甚至还有 crosstool-ng 用来制作 交叉编译用的gcc,如果不想自己制作,还可以下载别人制作好的工具链...

2019-12-22 22:56:59 1606

原创 嵌入式软件开发之------浅析linux根文件系统挂载(九)

Linux代码版本:linux4.4导读:前些天拿到供应商的一块arm64开发板,需要对其新CPU进行测试评估。需要将公司自己的系统移植上去测试一些参数。在挂载公司的cpio包的时候,出现解压失败。之前对于根文件系统的挂载都是一些零零散散的学习,按部就班也没出过啥问题,所以突然遇到问题不知道从哪下手,也刚好趁此机会系统的整理一次。最好的老师还是源代码,只有对源代码熟悉,才能知道该如何定位。由于...

2019-09-15 20:17:04 963

原创 嵌入式软件开发之------浅析linux驱动模型(八)usb驱动

Linux 代码版本:linux3.0开发板环境: tiny4412导读:在分析 i2c 控制器驱动的时候, i2c 控制器是作为 pltform_device 注册到系统 ,然后注册 platform_driver 匹配后调用到probe 函数 ,在 probe 函数中 填充 i2c_adapter ,然后实例化 i2c_client。虽然拿 i2c 做对比,但是 usb 驱动框架远远比 i...

2018-08-26 22:37:01 959

原创 嵌入式软件开发之------浅析linux驱动模型(七)usb协议简介

导读:usb(Universal Serial Bus) 串行总线协议是一种常见的计算机协议,几乎所有的个人电脑都配有 usb 接口,像优盘和手机也多是 usb 接口,还有一些打印机,鼠标和键盘等也是使用 usb 接口。usb 协议支持插拔,即插即用非常方便。这篇文章不是详解 usb 协议,只是对一些 usb 协议的知识点进行简单概括。在此推荐基本非常不错的 usb 学习书籍《圈圈教你玩USB》的...

2018-07-29 23:28:33 524

原创 嵌入式软件开发之------浅析linux驱动模型(六)input框架

Linux代码版本:linux3.0开发板环境: tiny4412导读:input框架是是针对的输入设备的特点抽象出来的驱动模型,如常见的鼠标、键盘、陀螺仪、ADC和温度传感等等各种各样的输入设备,都有一个明显的特点,就是采集到数据向系统报告,过程有高度的相似性。所以就将相似的地方抽象出来,驱动开发就剩下和硬件相关的部分。如input设备,只需要完成input_dev的相关参数设置,然后调用 ...

2018-07-22 17:06:22 534

原创 嵌入式软件开发之------浅析linux驱动模型(五)I2C驱动

Linux代码版本:linux3.0开发板环境: tiny4412导读:i2c控制器作为platform_device挂接在platform总线上,在《嵌入式软件开发之------浅谈linux驱动模型(四)device和driver》以i2c控制器为例,分析了s3c_device_i2c1和s3c24xx_i2c_driver的注册过程,总结下来就是下图:每个i2c控制器都是一个...

2018-07-15 20:57:27 810 1

原创 嵌入式软件开发之------浅析linux驱动模型(四)device和driver

Linux代码版本:linux3.0开发板环境: tiny4412导读:前面先后分析了kset、kobject、bus和class,其中在bus和class的代码之中已经展示了对kobject和kset的应用,而bus和class中的一些结构体成员并没有涉及,在device和driver的注册过程中,将会展示一些成员的用途。一、device结构体linux中有各种各样的设备,不同的...

2018-07-11 20:41:25 703

原创 嵌入式软件开发之------浅析linux驱动模型(三)class

Linux代码版本:linux3.0开发板环境: tiny4412导读:很多书籍介绍linux驱动模型的时候,经常会提到bus、device和driver的概念,对class介绍的不是太多。class,类,从名字上来理解也是将设备进行分类,只是和bus标准不同而已。例如一家公司,员工是一个个device,那么所属部门就是bus,公司要进行员工体检,仅仅从部门(bus)的角度分,并不是很好的...

2018-07-07 16:36:28 449 2

原创 嵌入式软件开发之------浅析linux驱动模型(二)bus

Linux代码版本:linux3.0开发板环境: tiny4412导读:上一节分析了kobject、kset和sys下目录的创建,这只是linux驱动模型最基本的一步,这一节开始分析bus的注册过程,后面会相继分析class、device和driver。下面以platform总线为例,分析platform总线的注册过程。一、platform相关结构体分析struct bus_ty...

2018-07-06 23:11:47 346

原创 嵌入式软件开发之------浅析linux设备驱动模型(一)kobject和kset

 Linux代码版本:linux3.0开发板环境: tiny4412导读:说起linux设备驱动,很容易想到一切皆文件的思想、bus、device、driver还有sysfs文件系统。说起总线又很容易想到platform、I2c、USB等等,device和driver都挂接在一种总线上,然后通过xxx_match函数进行匹配,各种书籍资料也更多的是介绍如果调用接口进行驱动开发,却很少谈...

2018-07-01 21:51:45 413

原创 嵌入式软件开发之------浅谈C代码编译过程

开发环境:ubuntu 16.04编译器:arm-linux-gnueabi-gcc 5.4.0一、导读    前些天帮助同事做linux内核热补丁,制作linux内核热补丁需要修改后C文件编译出来的xxx.o或xxx.obj文件,然后就发现不少工作几年的同事,一直以为编译就是一步完成的,不知道编译xxx.o是怎么产生的,尤其是公司成熟的平台都写好的脚本一键编译,很多人就更不了解编译过程是怎么进行...

2018-06-18 17:34:57 1613

原创 嵌入式软件开发之------浅谈研发管理与设计质量

一、导读    Would you buy an automobile made by a company with a high proportion of recalls? Would that change if they told you they had cleaned up their act? What does it really cost for your users to fi...

2018-06-17 21:12:15 3737

锐捷客户端破解,共享校园网wifi

不用破解客户端,不用做任何设置,轻松4步共享校园网,傻瓜式操作,没有担心破解不好,只有想象不到的简单!

2013-11-23

卡尔曼滤波C程序

用c语言写的卡尔曼滤波函数,适合初学者研究或者直接调用

2013-08-07

电子设计大赛PID总结

关于电子设计大赛的PID介绍总结 ,通俗易懂

2013-08-07

PID的C语言程序

由C语言编写的51系列单片机上PID算法的实现,通俗易懂

2013-08-07

stm32 mpu6050 串口输出

mpu6050的stm32版本,通过串口输出姿态融合后的数据。

2013-08-07

NRF905程序

集成AVR 51用的nrf905驱动程序

2013-08-07

基于stm32的RS485通信网络构建

485通信以其独特的优势已在工业上大量应用,也相当成熟!但很多想用自己的单片机组网时遇到很大麻烦!本文主要为初学者提供基于stm32的详细的组网方案

2013-07-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除