- 博客(57)
- 收藏
- 关注
原创 基于STM32F407ZG的FreeRTOS移植
将configUSE_IDLE_HOOK,configUSE_TICK_HOOK,configCHECK_FOR_STACK_OVERFLOW,configUSE_MALLOC_FAILED_HOOK改成0.(1)stm32f4xx_it.c中注释void SVC_Handler(void),void PendSV_Handler(void)函数。(1)在工程中添加FreeRTOS文件夹下的内容,port.c和portasm.s是port文件夹中的,MemMang中只需要heap.c。
2024-07-05 23:24:09 399
原创 了解ROM和RAM
(2)Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,它可以用于存储Bootloader和操作系统以及程序代码,应用程序可以直接在闪存中运行。(1)它结合了ROM和RAM的优点,具有电子可擦除、可编程(EEPROM)的性能,Flash不仅掉电不会丢失数据,还具有快速读取数据的优点。(6)读写和擦除速度:NOR Flash的读写速度比NAND块,NAND Flash的写入和擦除速度比NOR Flash快。(5)NOR Flash:可以直接运行装载在NOR Flash中的程序。
2024-07-01 13:48:37 208
原创 1.5 驱动设备类文件创建
(3)在加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sys下寻找对应的类从而创建设备节点。(1)内核通过class_create(…)函数,创建一个类,这个类存放于/sys中。(2)device_create(…)函数来在/dev目录下创建相应的设备节点。
2024-04-20 15:09:57 262
原创 1.4 简单的LED驱动
静态映射:内核移植时直接使用编码的方式,如果需要修改地址映射则要修改内核源代码,还要重新编译内核。驱动操作硬件时需要用到硬件物理地址在内核虚拟地址空间相对应的虚拟地址。动态映射:驱动根据需要动态建立映射。
2024-04-14 12:15:42 233
原创 1.3 字符设备驱动
向内核注册字符设备,也就是在内核中登记,让内核中分配一个设备号,标识该驱动。mknod /dev/xxx c 主设备号 次设备号。
2024-04-13 13:08:44 207
原创 1 .1 Linux驱动初了解
:又称单内核,就是将各个模块整合在一起,例如:进程管理、线程管理、内存管理等等都运行在内核态,并同时运行在一个单独的地址空间。(1)网络设备面向数据包的发送而设计,它并不对应于文件系统的节点。(1)应用程序与驱动程序之间的数据交互是以块(固定大小的字节)为单位的,主要针对的是存储设备,如:硬盘、U盘、eMMC、SD卡等。(1)应用程序与驱动程序之间的数据交互是以字符(字节)为单位的,如:LCD、串口、LED。):操作系统模块化,只有一个核心模块(微内核)运行在内核态,其它模块作为普通进程运行。
2023-07-22 11:52:18 171
原创 7 进程控制
如果一个子进程已经终止,是一个僵死进程,则 wait立即返回并取得该子进程的状态,否 则wait使其调用者阻塞直到一个子进程终止。一个现存进程调用fork函数是UNIX内核创建一个新进程的唯一方法 (这并不适用于前节提及的交换进程、init进程和页精灵进程。vfork与fork一样都创建一个子进程, 但是它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec (或exit ),于是也就不会存访该地址空间。两次返回的区别是子进程的返回值是 0,而父进程的返回值则是新子进程的进程 ID。
2023-07-14 17:17:09 333
原创 6 进程的环境
如果 ( a )若调用这些函数时不带终止状态,或 ( b ) main执行了一个无返回值的return语句,或( c ) main执行隐式返回,则该进程的终止状态是末定义的。exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理 (包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。其中,atexit的参数是一个函数地址,当调用此函数时无需向它传送任何参数,也不期望它返回一个值。下图中显示了一个C程序是如何起动的,以及它终止的各种方式。
2023-05-11 10:30:34 906 1
原创 5 系统数据文件和信息
例如, BSD网络软件有一个记录各网络服务器所提供的服务的数据文件 (/etc/services ),有一个记录协议信息的数据文件(/etc/protocols),还有一个则是记录网络信息的数据文件(/etc/networks)。幸运的是,对于这些数据文件的界面都与上述对口令文件和组文件的相似。localtime和gmtime之间的区别是: localtime将日历时间变换成本地时间 (考虑到本地时区和夏时 制标志),而gmtime则将日历时间变换成国际标准时间的年、月、日、时、分、秒、周日。
2023-05-05 10:04:30 453
原创 4 标准I/O库
(3)fdopen取一个现存的文件描述符(我们可能从open , dup , dup2 , fcntl或pipe函数得到此文 件描述符),并使一个标准的I/O流与该描述符相结合。因为这些特殊类型的文件不能用标准 I/O fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用 fdopen使一个标准I/O流与该描述符相结合。该对象通常是一个结 构,它包含了I/O库为管理该流所需要的所有信息:用于实际 I/O的文件描述符,指向流缓存的指针,缓存的长度,当前在缓存中的字符数,出错标志等等。
2023-05-04 11:17:45 601
原创 3 文件和目录
如果某个实现的处理是扩展该文件,则在以前的文件尾端和新的文件尾端之间的数据将读作0。给定一个pathname,stat函数返回一个与此命名文件有关的信息结构, fstat函数获得已在描述符filedes上打开的文件的有关信息。lstat函数类似于stat,但是当命名的文件是一个符号连接时, lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。符号连接是对一个文件的间接指针,它与上一节所述的硬连接有所不同,硬连接直接指向文件和目录的i节点。此字段只对普通文件、目录文件和符号连接有意义。
2023-05-01 17:38:53 1171
原创 2 文件IO
例如, i节点包含了文件的所有者、文件长度、文件所在的设备、指向文件在盘上所使用的实际数据块的指针等等。我们假定第一个进程使该文件在文件描述符 3上打开,而另一个进程则使此文件在文件描述符 4上打开。打开此文件的每个进程都得到一个文件表项,但对一个给定的文件只有一个 v节点表项。每个进程都有自己的文件表项的一个理由是:这种安排使每个进程都有它自己的对该文件的当前位移量。假定进程A调用了lseek,进程B也调用了lseek,这时如果有一个进程写了数据,那么文件的长度就会发生改变,就会影响另一个进程的操作。
2023-04-28 10:28:45 665
原创 1 Unix基础知识
但是对于用户而言,使用名字比使用数值方便,所以口令文件包含了登录名和用户ID之间的映射关系,而组文件则包含了组名和组ID之间的映射关系。口令文件中的登录项由7个以冒号分隔的字段组成:登录名,加密口令,数字用户ID(224),注释字段,起始目录(/home/username),以及shell程序(/bin/ksh)。目录(directory)是一个包含目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件属性是:文件类型,文件长度,文件所有这,文件的许可权。
2023-04-27 10:30:09 497
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人