![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
qq_27205523
这个作者很懒,什么都没留下…
展开
-
函数和指针
【1】GDB调试 gcc -g test.c -o test gdb ./test l 查看文件 b n 设置断点 info b 查看断点信息 r原创 2016-07-19 10:51:45 · 185 阅读 · 0 评论 -
uboot的启动流程
uboot的启动流程:通用的ubootctags -R 在当前目录下生成tags的索引文件ctrl +] 跳转ctrl + o 后退启动代码:arch/arm/cpu/armv7/start.o (.text*) 第一个阶段: 构建异常向量表 ||\/b reset设置cpu的工作模式关闭中断||\/ bl cp原创 2016-07-20 13:02:43 · 255 阅读 · 0 评论 -
linux内核的编译过程
linux内核的编译过程:uImage:进入顶层目录的Makefile文件中:504 include $(srctree)/arch/$(SRCARCH)/Makefile ====》 arch/arm/Makefile || \/ 进入arch/arm/Makefile中 必备变量: machine-$(CONFIG_ARCH原创 2016-07-20 13:02:06 · 383 阅读 · 0 评论 -
内核的调试方法
内核的调试方法: 1、点灯 2、通过串口输出 内核解压阶段, 使用putstr打印(arch/arm/boot/compressed/misc.c) 启动汇编中: printascii console_init()之后: 使用printk函数进行输出 int printk(const char *fmt, ...)int printk(消息级别 c原创 2016-07-20 13:01:21 · 353 阅读 · 0 评论 -
驱动开发
字符设备: 传输字符流的设备 不允许随机访问(一般) 块设备:数据块 允许随机访问 例如硬盘,U盘网络设备:可以使用网络的设备字符设备驱动:ctrl+N自动补齐生成tags一、模块:组成:1、许可证声明 MODULE_LICENSE("GPL"); 1) 不写内核会产生抱怨 2) 不写则内核很多函数无法使用2原创 2016-07-20 12:58:36 · 214 阅读 · 0 评论 -
驱动互斥中断
互斥机制: 1、屏蔽中断 2、原子操作 定义原子变量 atomic_t v; 初始化 atomic_t v = ATOMIC_INIT(0); 操作 atomic_t v = ATOMIC_INIT(1); open { if(atomic_dec_and_test(&v)) {原创 2016-07-20 12:54:36 · 362 阅读 · 0 评论 -
数据结构
数据结构【1】 数据:数据元素的集合; 数据元素:数据中的一项 数据项:描述数据元素的 结构:一种关系 数据结构:研究组成数据的数据元素之间的关系的学科 关系:逻辑关系:线性关系(一对一),树形关系(层次关系)(一对多),网状关系(图状关系)(多对多),集合关系(离散关系) 存储关系:顺序存储,链式存储,索引存储,散列存储; 顺序存储:地址连续,查找方便。不方便频繁的原创 2016-07-20 10:43:12 · 541 阅读 · 0 评论 -
LED灯驱动的编写
LED灯驱动的编写:一、原理图 LED2 GPX2_7 LED3 GPX1_0 LED4 GPF3_4 LED5 GPF3_5 输出---0灭、1亮二、芯片手册 GPX2CON 0x11000C40 [31:28] GPX2DAT 0x11000C44 [7] GPX1CON 0x11000C原创 2016-07-19 12:43:38 · 732 阅读 · 0 评论 -
蜂鸣器驱动
蜂鸣器驱动: 1、原理图 GPD0_0PWM TOUT0 2、芯片手册 CPD0CON 0x114000A0 1 (1)[3:0] c TCFG0 139D0000 2 (2)[7:0] TCFG1 139D0004 (3)[3:0] TCON 139D0008 (6)[3:0]原创 2016-07-19 12:42:13 · 942 阅读 · 0 评论 -
linux3.x 内核如何强制卸载模块?
一、问题现象:在insmod时调用的init函数代码执行过程中出现oops,导致rmmod卸载失败,此时不得不重启目标板?No!下面是《精通linux设备驱动程序开发》中模拟鼠标的输入设备驱动的内核模块vms.c代码:[html] view plaincopy在CODE上查看代码片派生到我的代码片 #include #include转载 2016-07-19 12:41:19 · 1764 阅读 · 0 评论 -
LINUX设备模型
一,基于总线的编程 platform_bus 总线:是一条虚拟总线,外设通过总线与cpu相连。所有片内外设设备,通过smc与cpu相连的设备可以使用platfrom_bus总线。 platform_bus_type : platform_driver:驱动的一个结构体代表驱动(去寻找platform_device)eg:driver.name="a"原创 2016-07-19 12:40:17 · 598 阅读 · 0 评论 -
进程
【1】进程 进程是一个抽象实体,当系统在执行某程序时,分配和释放的各种资源 进程是一个程序的一次执行的过程【2】进程和程序的区别进程:动态的,占用内存,占有系统分配资源,具有进程,分级创建的,在启动流程最后。会加载init进程(liunx的第一个进程)其他所有进程都是从此开始每一个PID表示唯一的一个进程,进程号是有限资源【3】进程的相关操作原创 2016-07-19 12:37:09 · 563 阅读 · 0 评论 -
liunx内核睡眠机制
一,手动睡眠 使用灵活二,简单睡眠 使用简单简单睡眠的实现: 1,定义等待队列头 wait_queue_head_t readq;2,初始化等待队列头 init_waitqueue_head(wait_queue_head_t *); 例如: init_waitqueue_head(&readq原创 2016-07-19 10:57:38 · 350 阅读 · 0 评论 -
I/O模型
1、UDP流程2 提醒:客户端的sendto永远成功,即使服务端没运行,也不报错,所以有了第二种流程。 服务器 客户端 socket(SOCK_DGRAM) socket(SOCK_DGRAM) |原创 2016-07-19 10:55:05 · 681 阅读 · 0 评论 -
系统运行步骤
uboot:README文件目录结构:平台相关:arch board平台无关:common doc driver fs tools配置和编译:配置:make xxx_config xxx是开发板的名字 比如: make origen_config 顶层目录MakefileMKCONFIG原创 2016-07-20 13:03:32 · 349 阅读 · 0 评论