自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式内核&驱动(下)

仅devfs,导致开发不方便以及一些功能难以支持:热插拔不支持一些针对所有设备的统一操作(如电源管理)不能自动mknod用户查看不了设备信息设备信息码,导致驱动代码通用性差,即没有分离设备和驱动从 硬编 -> (2.0)总线式驱动开发 -> (3.0)设备树。

2024-07-28 16:04:39 873

原创 嵌入式内核&驱动(中下)

一种硬件上的通知机制,用来通知CPU发生了某种需要立即处理的事件CPU执行程序的过程中,发生的一些硬件出错、运算出错事件(如分母为0、溢出等等),不可屏蔽外设发生某种情况,通过一个引脚的高、低电平变化来通知CPU (如外设产生了数据、某种处理完毕等等)//参数:t:tasklet的结构体。

2024-07-24 15:17:22 806

原创 嵌入式内核&驱动(中上)

/ 主设备号// 次设备号// 设备数量// 定义一个字符设备结构体通过这种方式,用户空间的程序能够与内核空间的模块交互,从而不是简单地使用库文件中的open和close实现,而是实际上调用了内核模块中定义的特定函数。这就是用户空间如何触发内核模块中定义的打印信息的基本机制。字符设备驱动开发步骤:如果设备有自己的一些控制数据,则定义一个包含struct cdev cdev成员的结构体struct mydev,其它成员根据设备需求,设备简单则直接用struct cdev。

2024-07-21 02:13:09 651

原创 嵌入式内核&驱动(上)

狭义的操作系统:给应用程序提供运行环境的裸机程序,也被称为操作系统内核广义的操作系统:一组软件集合,它包含:内核 (kernel)app开发常用的一些功能库(如:C语言标准函数库、线程库、C++标准类库、QT类库等等)一些管理用的特殊app(如桌面、命令行、app包管理器、资源管理器、系统设置、一些常用后台服务程序)驱动(Driver)设备驱动(Device Driver)一种添加到操作系统中的特殊程序,主要作用是协助操作系统完成应用程序与对应硬件设备之间数据传送的功能。

2024-07-14 00:41:34 966

原创 系统移植喝喝

编译完成后会在源码顶层目录下生成u-boot.bin文件,但该文件还不能在我们的开发板上运行,因为以上操作我们只是把origen相关的文件的名字改成了fs4412,使uboot能识别fs4412开发板,但文件中的代码还是origen的,和我们的开发板不匹配,所以我们还需要进一步进行修改和配置。Linux是一个通用的内核,并不是为某一个特定的处理器架构或板卡设计的,所以从官方获取Linux源码后,我们要先经过相应的配置,使其与我们当前的硬件平台相匹配后,才能进行编译和安装。

2024-07-10 11:47:43 912 1

原创 IIC(Inter-Integrated Circuit)

简介简介IIC总线是Philips公司在八十年代初推出的一种总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用IIC总线是一种总线,连接在IIC总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(

2024-07-04 14:19:15 982

原创 exynos4412开发

目录目录FS4412硬件资源原理交叉开发环境搭建地址映射 硬件控制原理GPIOLED实验C工程与寄存器封装 逻辑运算解决问题 UART通信基础 并行通信串行通信 单工通信双工通信 波特率UART帧格式UART硬件连接​编辑UART控制器 引脚功能设置Exynos4412下的UART控制器 UART 寄存器详解UART编程WDTExynos4412下的WDT控制器WDT寄存器详解WDT编程中断CPU与硬件的交互方式轮训方式实现按键实验GPIO中断中断控制器中断控制器作用 Exynos4412的中断控制器

2024-07-02 01:48:36 805

原创 ARM体系结构与编程

计算机基础知识——认识寄存器 内核有三种含义:一个公司的名称一类处理器的通称一种技术> 成立于1990年11月,前身为Acorn计算机公司> 主要设计ARM系列RISC处理器内核> 授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片> 提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件、总线架构、外围设备单元等。

2024-06-11 00:02:33 1151

原创 域名解析&HTTP

<body></body>

2024-05-18 02:06:50 617

原创 套接字属性设置&广播、组播

基本概念:设置套接字的选项对套接字进行控制,除了设置选项外,还可以获取选项 ,选项的概念相当于属性,所以套接字选项也可说是套接字属性,有些选项(属性)只可获取,不可设置;有些选项既可设置也可获取。

2024-05-16 01:13:09 846

原创 I/O模型

阻塞式IO在进行数据读取时,如果内核中没有数据(发送端可能还没有发送数据或者发送的数据还没有达到),此时内核就开始等待数据,同时用户进程也进入阻塞状态,整个进程就会被挂起等待,不能做其他的事情。(单线程多线程根据具体业务要求),线程每次询问操作系统是否准备好数据时不再向阻塞IO那样,要把自己挂起,而是每次询问,操作系统直接返回结果,有数据就返回数据,没有数据就返回异常,但同时造成大量地空沦陷,不是所有的连接都有数据到来,进程也会一直占用CPU。在Linux中,默认所有的socket都是阻塞式的。

2024-05-13 22:50:24 640

原创 TCP(传输控制协议)详解

答:不能简化为“两报文握手”建立TCP连接,原因如下:(1)TCP客户进程发出一个TCP连接请求报文段。但该报文段在某些网络节点长时间滞留了。这必然会造成该报文段的超时重传,假设重传的连接请求报文段被TCP服务器进程正常接收。(2) TCP服务器进程给TCP客户进程发送一个TCP连接请求确认报文段,并进入连接已建立状态。

2024-04-25 22:25:58 877

原创 UDP通信

数据被复制到缓冲区中,但不会从输入队列中删除。:处理带外(OOB)数据。(带外数据是TCP内容)2. 后两个参数是通信结构体和结构体的宽度;1. 前四个参数同recv/send一样;socket接口拓展:详可见。

2024-04-25 18:00:49 191

原创 实现TCP通信(含地址快速重用介绍)

通信地址族:AF_INET: 使用IPv4 互联网协议 AF_INET6: 使用IPv6 互联网协议 ......TCP唯一对应流式套接字,所以选择SOCK_STREAM(数据报套接字:SOCK_DGRAM)指定协议 流式套接字唯一对应TCP,所以无需要指定协议,设为0即可。

2024-04-24 00:52:15 83

原创 网络编程笔记

*创建套接字*///type:套接字类型/*绑定通信结构体*//*监听套接字*//*处理客户端发起的连接,生成新的套接字*//*向服务器发起连接请求*/

2024-04-23 01:56:17 794

原创 消息队列&信号灯/信号量(semaphore)

cmd 要执行的操作 IPC_STAT / IPC_SET / IPC_RMID(删除)msgtype=0:收到的第一条消息,任意类型。IPC_NOWAIT:如果没有返回条件的消息调用立即返回,此时错误码为ENOMSG。msgtype>0:收到的第一条 msg_type类型的消息。IPC_NOWAIT:当消息队列已满的时候,msgsnd函数不等待立即返回。1 .消息结构必须有long类型的msg_type字段,表示消息的类型。0:当消息队列满时,msgsnd将会阻塞,直到消息能写进消息队列。

2024-04-19 01:23:27 704

原创 进程间通信 - 信号机制

0:发送信号给跟调用kill函数的那个进程处于同一进程组的进程。< -1: 取绝对值,发送信号给该绝对值所对应的进程组的所有组员。SIG_IGN 代表忽略信号;sa_sigaction: 另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信息。信号递达(Delivery ):实际信号执行的处理过程(3种状态:忽略,执行默认动作,捕获)SA_NODEFER:使对信号的屏蔽无效,即在信号处理函数执行期间仍能发出这个信号。

2024-04-18 17:38:30 891

原创 内存映射的概念与使用

共享内存可以通过mmap()映射普通文件;使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通内存一样对文件进行访问,不必再调用read,write。mmap()mmap()的函数定义:功能:创建共享内存映射函数返回值:成功返回创建的映射区首地址,失败返回MAP_FAILED( ((void *) -1) ),设置errno值参数说明:addr:指定要映射的内存地址,一般设置为 NULL, 让操作系统自动选择合适的内存地址。length:必须>0。

2024-04-18 01:24:47 974

原创 进程间通信

对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。(2) 写端没有全部被关闭,read阻塞等待(不久的将来可能有数据递达,此时会让出cpu)

2024-04-16 21:13:34 872

原创 锁&条件变量&线程池&GDB调试多线程

在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的 pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。写者:写者使用写锁,如果当前没有读者,也没有其他写者,写者立即获得写锁;否则写者将等待,直到没有读者和写者。读写锁出于写锁状态时,所有试图对读写锁加锁的线程,不管是读者试图加读锁,还是写者试图加写锁,都会被阻塞。读写锁处于读锁状态时,有写者试图加写锁时,之后的其他线程的读锁请求会被阻塞,以避免写者长时间的不写锁。

2024-04-14 00:57:50 745

原创 exec函数族

由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息。off:父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定),另一个进程会被设置为暂停状态。) 切换GDB调试的进程。

2024-04-10 17:00:07 138

原创 【无标题】小小图片

自用

2022-06-09 10:58:28 51

空空如也

空空如也

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

TA关注的人

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