- 博客(48)
- 收藏
- 关注
原创 【驱动开发】设备分类、设备号申请和注销,注册和移除字符设备,以及一个基本的内核驱动程序框架代码
在内核中,通过设备号来识别各个设备,就和我们的身份证一样,一个设备号只能对应一个设备,但一个设备可以有多个设备号,相当于正常情况下,别人不会通过身份证号来叫某人,而是通过名字,甚至昵称等来称呼。内核用设备号来区分同类里不同的设备,设备号是一个无符号32位整数,数据类型为dev_t,设备号分为两部分:主设备号:占高12位,用来表示驱动程序相同的一类设备次设备号:占低20位,用来表示被操作的哪个具体设备应用程序打开一个设备文件时,通过设备号来查找定位内核中管理的设备。
2024-12-28 21:31:30
1338
原创 【驱动开发】内核模块静态和动态添加功能的步骤
所谓静态添加新功能,就是将新功能源码,与内核其他代码一起编译到uImage,加载到开发板运行。所谓内核模块动态添加功能,是指新功能与内核其他源码不一起编译,而是独立编译成内核的插件(被称为内核模块)文件.ko。动态添加法分为两种情况,一种是新功能源码和内核源码在同一目录结构下,另一种是不在同一目录结构下。
2024-12-22 22:41:45
826
原创 【系统移植】制作SD卡启动——将uboot烧写到SD卡
在开发板上启动Linux内核,一般有两种方法,一种是从EMMC启动,还有一种就是从SD卡启动,不断哪种启动方法,当开发板上电之后,首先运行的是uboot。制作SD卡启动,首先要将uboot烧写到SD卡,我们既可以在Linux环境下完成烧写,也可以在Windows环境下完成烧写。
2024-12-22 15:38:21
1450
原创 【系统移植】NFS服务器环境搭建——挂载根文件系统
NFS(Network File System)即网络文件系统,其基于UDP/IP 使用NFS能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样,文件只存在于服务器上,并没有下载到客户端,类似于百度网盘的在线阅览功能。Ubuntu和开发板之间用NFS协议传输文件时,Ubuntu为NFS服务器,开发板为客户端 ,能够在开发板上挂载根文件系统。
2024-12-22 12:18:30
998
原创 【系统移植】交叉编译工具链常用工具
在嵌入式开发中,经常会用到各种交叉编译工具,这里简单介绍几个常用工具,文中只介绍了几个常用的命令以及相应的常用后缀,可以通过man命令进行更深入了解。
2024-12-16 22:31:16
466
原创 【系统移植】在开发板上加载内核和根文件系统的三种方法
实现环境:ubuntu24.04和FS4412实验平台。要在开发板上运行linux操作系统,首先要将linux内核镜像(uImage)、设备树(dexynos4412-fs4412.dtb)和根文件系统镜像(ramdisk.img)加载到开发板内存。有以下几种方式加载:一、通过tftp加载内核和根文件系统二、通过EMMC加载内核和根文件系统三、通过tftp加载内核,通过nfs挂载根文件系统。
2024-12-15 23:37:52
1010
原创 【系统移植】Uboot的使用:主要环境变量及命令、tftp下载文件的步骤以及主要存储器访问命令
uboot启动后若没有用户介入,倒计时结束后会自动执行自启动 环境变量(bootcmd)中设置的命令(一般作加载和启动内核)。
2024-12-14 16:45:50
790
原创 【系统移植】TFTP服务器环境搭建
TFTP(Trivial File Transfer Protocol)即简单文件传输协议,是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。Ubuntu和开发板之间用TFTP协议传输文件时,Ubuntu为TFTP服务器,开发板为客户端。
2024-12-13 15:24:21
495
原创 【系统移植】开发板启动过程
三、当uboot被加载到RAM之后,首先对软件和硬件环境做进一步的初始化,再将外存中的linux以及linux运行中需要的设备树(dtb)和根文件系统(rootfs)加载到内存,uboot使命完成,跳转到linux运行;二、如果获取到的启动模式是SD卡模式启动,会将SD卡中的uboot加载到RAM中,因为SD卡是外置设备,无法直接运行;一、开发板上电之后,首先执行固在IROM中的代码(BL0),BL0执行后,首先对软硬件执行基本的初始化,并检测拨码开关的位置,获取启动模式;
2024-12-13 13:48:36
209
原创 【C语言】为什么局部变量未初始化得到的值是随机值,全局变量得到的是0?
在C语言中,声明一个变量后,没有初始化就使用,可能带来灾难性的后果,而且这种错误经常不容易察觉。
2024-11-10 20:03:57
497
原创 【嵌入式开发之网络编程】TCP并发实现
在实例中,经常会存在多个客户端向服务端发送连接请求和传递数据的情况,为了解决这个问题,我们需要利用或者来实现并发。
2024-08-26 17:05:27
663
原创 【嵌入式开发之网络编程】Socket套接字及TCP、UDP通信的实现
是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)。是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题。
2024-08-26 15:43:18
1611
原创 【嵌入式开发之网络编程】字节序及IP地址转换
比如,0x11223344:这是一个十六进制数,每一位的存储占4个位,也就是每一个字节存储2个数字。可以通过编程查看主机的字节序。short型是2个字节,所以bytes的长度是2个字节,test.value=0x0102,一个字节存1,另一个字节存2,通过判断1和2存储的位置,就能判断出主机是小端字节序还是大端字节序。
2024-08-20 17:47:03
738
原创 【嵌入式开发之网络编程】TCP端口和UDP端口
在网络技术中,端口(port)包括逻辑端口(logic port)和物理端口(physical port)两种类型。物理端口是用于连接物理设备之间的接口,如ADSL Modem、集线器、交换机、
2024-08-20 12:03:39
1195
原创 【嵌入式开发之网络编程】IP地址及编址方式
点分十进制记法,就是IPv4的IP地址标识法,对于主机和路由器来说,IPv4的IP地址就是32位的二进制,为了提高可读性,人们将32位的二进制分成4个部分,然后分别转换成十进制,中间加点,就变成了我们常见的IP地址,如128.11.3.31。
2024-08-18 20:47:28
985
原创 【嵌入式开发之网络编程】网络分层、OSI七层模型、TCP/IP及五层体系结构
面对这一系列的问题,最初的 ARPANET 设计时提出了分层的设计方法,将庞大而复杂的问题,转化为若干较小的局部问题,1974 年,IBM 按照分层的方法制定并提出了系统网络体系结构 SNA (System Network Architecture),此后,其他一些公司也相继推出了具有不同名称的体系结构。
2024-08-17 14:58:57
1478
原创 【嵌入式开发之网络编程】互联网的基本概念
出现了互联网服务提供者 ISP (Internet Service Provider),他们提供接入到互联网的服务,并收取一定的费用,构成包括主干 ISP、地区 ISP 和本地 ISP 覆盖面积大小和所拥有的 IP 地址数目的不同多层次 ISP 结构。互联网则是全球最大的、开放的、由众多网络相互连接而成的特定互连网络,0采用TCP\IP协议族作为通信规则,它的前身是美国的ARPAnet(阿帕网)。网络是把许多计算机连接在一起,互连网络是把许多网络通过一些路由器连接在一起,与网络相连的计算机常称为主机。
2024-08-17 11:24:24
933
原创 【嵌入式开发之并发程序设计】线程的基本概念、pthread线程库的创建、互斥锁的使用、条件变量以及线程池的概念和使用(关于线程的基础知识一条龙)
关于线程的基础知识。
2024-07-28 19:12:09
2270
原创 【嵌入式开发之并发程序设计】守护进程的定义、特点、相关概念及创建
守护进程(Daemon Process),又叫精灵进程、监控进程,是Linux三种进程类型之一,是 Linux 中的后台服务进程,是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。
2024-07-24 11:15:38
1087
原创 【嵌入式开发之并发程序设计】进程的创建和回收
存放在磁盘上的指令和数据的有序集合(文件) 静态的。执行一个程序所分配的资源的总称,进程是程序的一次执行过程,进程是动态的,包括创建、调度、执行和消亡。
2024-07-23 21:16:19
1035
原创 【嵌入式开发之标准I/O】静态库和动态库的创建和使用
库是事先编译好的,可以复用的代码。在OS上运行的程序基本上都要使用库。使用库可以提高开发效率。Windows和Linux下库文件的格式不兼容 Linux下包含静态库和共享库。库是一个二进制文件,包含的代码可被程序调用标准C库、数学库、线程库……库有源码,可下载后编译;也可以直接安装二进制包 /lib /usr/lib。
2024-07-22 11:51:27
892
原创 【嵌入式开发之数据结构】树的基本概念、逻辑结构和四种常用的遍历算法及实现
树是一种常用的非线性结构,不同的遍历算法将产生不同的结果,可以满足不同的需要。
2024-07-19 10:45:01
2022
原创 【嵌入式开发之数据结构】单链表的链式存储结构、结点描述以及单链表创建的实现
将线性表中各个元素分布在存储器的不同存储块,称为结点的data域存放数据元素,而next域是一个指针,指向的直接后继的结点。
2024-07-13 18:36:36
1125
原创 【嵌入式开发之数据结构】数据结构的基本概念、逻辑结构和存储结构
数据结构研究的是计算机数据之间的关系,包括数据的逻辑结构和存储结构及其操作(运算)。
2024-07-06 21:05:07
1345
原创 【嵌入式之shell命令】文件的解压缩和归档
用户在进行数据备份时,需要把若干文件整合为一个文件以便保存。尽管整合为一个文件进行管理,但文件大小仍然没变。若需要网络传输文件时,就希望将其压缩成较小的文件,以节省在网络传输的时间。因此本节介绍文件的归档与压缩。
2024-07-06 00:01:08
325
原创 【嵌入式之shell命令】文件查看命令和硬链接、软链接的区别
如果是修改硬链接的目标文件名,链接依然有效;如果修改软链接的目标文件名, 则链接将断开,目标文件名再改回来,则链接恢复;对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。 假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。
2024-07-05 22:12:34
510
原创 【嵌入式开发之TFTP服务器】TFTP服务器简介、特点、应用场景及其搭建
TFTP是TCP/IP协议族中被用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。
2024-06-30 22:44:44
1068
原创 【嵌入式之用户管理】用户管理相关文件和命令介绍
etc/passwd文件是系统能够识别的用户清单。用户登录时,系统查询文件,确定用户的UID并验证用户信息。
2024-06-25 00:09:57
400
原创 【嵌入式之进程】进程的概念及查看和终止命令
进程是一个实体,每个进程都有自己的地址空间,一般情况下,包括文本区域(存储处理器执行的代码)、数据区域(存储变量在程序执行期间使用的动态分配的内存)和堆栈(存储着活动过程中的指令和本地变量)。进程是一个“执行中的程序”,程序是一个没有生命的实体,处理器赋予程序生命时,它才能成为有生命的实体,我们称其为进程。
2024-06-24 23:38:45
460
原创 【shell笔记】切换用户时报su: Authentication failure错误的解决办法
passwd username 修改指定用户的密码。
2024-06-22 22:06:59
597
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人