LINUX
qq_27205523
这个作者很懒,什么都没留下…
展开
-
函数和指针
【1】GDB调试 gcc -g test.c -o test gdb ./test l 查看文件 b n 设置断点 info b 查看断点信息 r原创 2016-07-19 10:51:45 · 187 阅读 · 0 评论 -
系统运行步骤
uboot:README文件 目录结构: 平台相关:arch board 平台无关:common doc driver fs tools 配置和编译: 配置:make xxx_config xxx是开发板的名字 比如: make origen_config 顶层目录Makefile MKCONFIG原创 2016-07-20 13:03:32 · 372 阅读 · 0 评论 -
uboot的启动流程
uboot的启动流程:通用的uboot ctags -R 在当前目录下生成tags的索引文件 ctrl +] 跳转 ctrl + o 后退 启动代码:arch/arm/cpu/armv7/start.o (.text*) 第一个阶段: 构建异常向量表 || \/ b reset 设置cpu的工作模式 关闭中断 || \/ bl cp原创 2016-07-20 13:02:43 · 278 阅读 · 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 · 388 阅读 · 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 · 382 阅读 · 0 评论 -
驱动开发
字符设备: 传输字符流的设备 不允许随机访问(一般) 块设备:数据块 允许随机访问 例如硬盘,U盘 网络设备:可以使用网络的设备 字符设备驱动: ctrl+N自动补齐 生成tags 一、模块: 组成: 1、许可证声明 MODULE_LICENSE("GPL"); 1) 不写内核会产生抱怨 2) 不写则内核很多函数无法使用 2原创 2016-07-20 12:58:36 · 216 阅读 · 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 · 375 阅读 · 0 评论 -
数据结构
数据结构 【1】 数据:数据元素的集合; 数据元素:数据中的一项 数据项:描述数据元素的 结构:一种关系 数据结构:研究组成数据的数据元素之间的关系的学科 关系: 逻辑关系:线性关系(一对一),树形关系(层次关系)(一对多),网状关系(图状关系)(多对多),集合关系(离散关系) 存储关系:顺序存储,链式存储,索引存储,散列存储; 顺序存储:地址连续,查找方便。不方便频繁的原创 2016-07-20 10:43:12 · 550 阅读 · 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 · 757 阅读 · 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 · 967 阅读 · 0 评论 -
linux3.x 内核如何强制卸载模块?
一、问题现象: 在insmod时调用的init函数代码执行过程中出现oops,导致rmmod卸载失败,此时不得不重启目标板? No! 下面是《精通linux设备驱动程序开发》中模拟鼠标的输入设备驱动的内核模块vms.c代码: [html] view plaincopy在CODE上查看代码片派生到我的代码片 #include #include转载 2016-07-19 12:41:19 · 1780 阅读 · 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 · 608 阅读 · 0 评论 -
进程
【1】进程 进程是一个抽象实体,当系统在执行某程序时,分配和释放的各种资源 进程是一个程序的一次执行的过程 【2】进程和程序的区别 进程:动态的,占用内存,占有系统分配资源,具有 进程,分级创建的,在启动流程最后。会加载init进程(liunx的第一个进程)其他所有进程都是从此开始 每一个PID表示唯一的一个进程,进程号是有限资源 【3】进程的相关操作原创 2016-07-19 12:37:09 · 568 阅读 · 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 · 356 阅读 · 0 评论 -
I/O模型
1、UDP流程2 提醒:客户端的sendto永远成功,即使服务端没运行,也不报错,所以有了第二种流程。 服务器 客户端 socket(SOCK_DGRAM) socket(SOCK_DGRAM) |原创 2016-07-19 10:55:05 · 683 阅读 · 0 评论 -
linux 基本操作
uname -r 查看内核版本号 uname -n 查看用户名 【18】关机指令 sudo shutdown -h now 立即关机 延迟50分钟关机 sudo shutdown -r now 立即重启 sudo reboot now 60分钟后重新启动 【3】vi 命令 在命令行模式下 h向左移动一个字符 j向下移动一行 k向上移动一原创 2016-07-20 13:05:06 · 588 阅读 · 0 评论