自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Day05_字符设备驱动基础中_IO模型

阻塞: 不能操作就睡觉非阻塞:不能操作就返回错误多路复用:委托中介监控信号驱动:让内核如果能操作时发信号,在信号处理函数中操作异步IO:向内核注册操作请求,内核完成操作后发通知信号。

2023-11-02 11:07:55 129 1

原创 字符设备驱动-基础框架

ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数来控制设备的I/O通道。ioctl 是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设 ioctl() 命令的方式实现。

2023-11-02 11:03:56 110 1

原创 内核编译模块-参数和依赖

/将指定的全局变量设置成模块参数/*name:全局变量名type:使用符号 实际类型 传参方式bool bool insmod xxx.ko 变量名=0 或 1invbool bool insmod xxx.ko 变量名=0 或 1charp char * insmod xxx.ko 变量名="字符串内容"

2023-10-17 21:31:43 226 1

原创 内核模块——编译方法

即新功能源码与内核其它代码一起编译进uImage文件内新功能源码与Linux内核源码在同一目录结构下在linux-3.14/driver/char/目录下编写myhello.c,文件内容如下:​return 0;​给新功能代码配置Kconfig#进入myhello.c的同级目录​#39行处添加如下内容:helpKconfig就是make menuconfig 界面配置文件给新功能代码改写Makefile#进入myhello.c的同级目录​。

2023-10-15 15:33:34 147 1

原创 文件IO测试题

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。通过库函数的方式对文件进行操作,数据被暂时存储到缓存区中,直到满足一定条件时,才会真正写入磁盘。9、用文件IO分别实现标准IO中的(r, r+, w, w+, a, a+),文件名由argv[1]传入程序.5、用open( )创建新文件时,若该文件存在则可以返回错误信息的参数是 ( B )通过系统调用的方式对文件进行操作,没有用户缓存区,数据实时写入磁盘。8、标准IO和文件IO的区别。

2023-10-10 16:32:10 373 1

原创 数据结构面试题

他的下一个人又从1开始报数,数到m的那个人又出列;分析:i+1 = 2^k-2-1+1 ------> 2^k-2 = i+1 2^k-1 = 2i+2 根据上述:2^k-1 -1+1 = 2i+2(个数) 则:2i+2-1(编号)线性结构是逻辑结构 数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。2k-1 是k层的满二叉树个数,(2k-1-1)有k-1层的满二叉树个数,下层最左边多一个满足题意,则(2k-1-1)+1 == 2k-1。

2023-06-25 21:26:11 1131

原创 C语言常见面试题

(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;14、若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));24、给定一个整型变量a,写两个函数,第一个设置a的bit 3位,第二个清除a 的bit 3,在以上两个操作中,要保持其它位不变。(3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;

2023-06-13 21:11:23 2830 1

原创 根文件系统移植

根文件系统是内核启动后挂载的第一个文件系统系统引导程序会在根文件系统挂载后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

2023-04-23 21:20:23 191

原创 Linux设备驱动移植

dts 设备树源文件dtsi 类似于头文件,包含一些公共的信息,可被其它设备树文件引用dtb 编译后的设备树文件。

2023-04-22 20:51:12 410

原创 uboot的烧写及使用

Bootloader在操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统)Bootloader基本功能初始化软硬件环境引导加载linux内核给linux内核传参执行用户命令注:bootloader是启动引导程序的统称,嵌入式linux常用的bootloader是uboot SD卡的存储以扇区为单位,每个扇区的大小为512Byte, 其中零扇区存储分区表(即分区信息),后续的扇区可自行分区和格式化;若选择SD卡启动,处理器上电后从第一个扇

2023-04-17 20:59:20 643 1

原创 交叉开发环境搭建

nfs是网络文件系统,不是用来传东西的,是把嵌入式的根文件系统通过nfs放在网络上的某个介质中,nfs是通过以太网中的udp传送命令的。tftp是通过TCP/IP协议用来在客户机与服务器之间进行简单文件传输的协议。nfs(Network File System)即网络文件系统,其基于UDP/IP使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。掌握 nfs 环境搭建的基本方法,能够在开发板上使用 nfs 挂载根文件系统。

2023-04-16 21:15:42 160 1

原创 系统移植导学

开发板上电后首先运行SOC内部iROM中固化的代码(BL0),这段代码先对基本的软硬件环境(时钟等...)进行初始化,然后再检测拨码开关位置获取启动方式,然后再将对应存储器中的uboot搬移到内存,然后跳转到uboot运行。uboot开始运行后首先对开发板上的软硬件环境做进一步初始化,然后将linux内核、设备树(dtb)、根文件系统(rootfs)从外部存储器(或网络)搬移到内存,然后跳转到linux运行。1.当在开发板上安装了Linux系统之后,简述开发板的启动过程?3.通过U盘中的引导程序安装系统。

2023-04-16 15:58:37 66 1

原创 计算机硬件基础

向下管理硬件、向上提供接口(API)

2023-04-15 14:25:43 153 1

空空如也

空空如也

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

TA关注的人

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