- 博客(26)
- 资源 (3)
- 收藏
- 关注
原创 uboot分析(1)
硬件平台:NUC972 uboot版本:2013.4 第一阶段:编译nand_spl,引导uboot,宏CONFIG_NAND_SPL打开。//arch/arm/cpu/arm926ejs/start.S.globl _TEXT_BASE_TEXT_BASE: .word CONFIG_SYS_TEXT_BASE//宏CONFIG_SYS_TEXT_BASE 在两个阶段都有
2016-11-03 15:53:59
150
原创 内核之PINCTRL子系统
linux内核版本:3.10 cpu平台:nuc972 相关结构体://include/linux/pinctrl/pinctrl.hstruct pinctrl_desc { const char *name; struct pinctrl_pin_desc const *pins; unsigned int npins; const struct
2016-10-17 16:49:58
95
原创 Linux USB子系统
参考文章: USB底层协议相关数据如下://这里数据成员并没有完全列出struct usb_device{ //usb设备 struct device dev; char devpath[16]; u8 portnum; struct usb_host_endpoint ep0; struct usb
2016-06-02 11:37:19
214
原创 workqueue,tasklet,内核定时器
工作队列tasklet在软件中断上下文运行,所以tasklet的代码是原子的,而工作队列在特殊内核进程上下文运行,可以睡眠内核代码可以请求工作队列函数执行延迟给定的时间间隔。tasklet可以在很短的时间间隔内执行,原子模式执行,工作队列可以更长的延迟,不用原子化#include<linux/workqueue.h>// 工作队列struct workqueue_struct *crea
2016-04-06 17:23:13
208
原创 linux系统移植点点
ARM根文件系统: 1 dns服务器的设置 /etc/resolv.conf文件中添加 nameserver 223.5.5.5 //阿里服务器 nameserver 223.6.6.6 gdbserver 1 下载gdb-6.8 交叉编译gdb,gdbserver –target=需要调试的目标环境 –host=编译后的文件运行的环境 这一项在编译gdb和gdbserver不
2016-03-28 15:48:07
61
原创 文章标题
typedef struct __wait_queue wait_queue_t;typedef void (*wait_queue_func_t)(wait_queue_t * wait,uint mode,int sync,void *key);struct __wait_queue{ unsigned int flag; wait_queue_func_t func;
2016-03-04 18:29:18
151
原创 内核机制之互斥与同步
并发来源: 1 中断 2 处理器的调度 3 多处理器的并发执行 local_irq_enable: 打开本地处理器中断, 对应于 local_irq_save:保存当前处理器状态 local_irq_disable: 关闭本地处理器中断 对应于 local_irq_restore 自旋锁 设置多处理器共享的全局变量锁V,并定义V =1 时为上锁状态,V=0时为解锁状态。当处理
2016-03-03 15:26:51
172
原创 文章标题
随着生活水平的提高,人们对USB设备的使用也越来越多,鉴于Linux在硬件配置上尚不能全部即插即用,因此关于Linux如何配置和使用,成为困扰我们的一大问题。 什么是USB? USB是英文Universal Serial Bus的缩写,意为通用串行总线。USB最初是为了替代许多不同的低速总线(包括并行、串行和键盘连接)而设计的,它以单一类型的总线连接各种不同的类型的设备。USB
2016-03-02 16:23:38
44
转载 linux work queue工作原理
什么是workqueue Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.工作队列(workqueue)是另外一种将工作推后执行的形式.工作队列可以
2016-03-01 15:20:25
178
原创 Linux USB知识积累
Linux内核版本:2.6.28 driver/usb/core/driver.cstruct bus_type usb_bus_type = { .name = "usb", .match = usb_device_match, .uevent = usb_uevent,};usb设备: struct usb_device usb配置:
2016-03-01 10:35:51
60
原创 Ti-SYSBIOS在beagleboneblack移植
am335x platform 移植//platform/am335x/src/plat_i2c.c:#ifdef beaglebone#include "armv7a/am335x/beaglebone.h"#else#include "armv7a/am335x/evmAM335x.h"#endif//i2c电源增加宏beaglebone的定义void I2CPowerup
2015-11-05 22:12:06
98
原创 c/c++ 学习笔记
c++: 成员函数: const int f()const; 在函数前面加const的 修饰的是函数返回值 在函数后面加const的,在成员函数实现的过程中,不能修改类的数据成员值
2015-10-26 16:13:08
77
原创 arm-linux 交叉编译制作
1 安装 crosstool-ng 下载源码: wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.20.0.tar.bz2 tar -jxvf crosstool-ng-1.20.tar.bz2 ubuntu下需要安装相关工具: sudo apt-get install sed bash cut dpkg-d
2015-10-21 11:07:20
258
原创 Linux USB子系统(1)
linux内核 2.6.28 1 链表//include/linux/list.hstruct list_head { struct list_head *next, *prev;};//声明与初始化#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \ struct
2015-10-13 11:27:38
67
转载 NandFlash详述(中)
【Nand Flash引脚(Pin)的说明】 上图是常见的Nand Flash所拥有的引脚(Pin)所对应的功能,简单翻译如下: 1. I/O0 ~ I/O7:用于输入地址/数据/命令,输出数据 2. CLE:Command Latch Enable,命令锁存使能,在输入命令之前,要先在模式寄存器中,设置CLE使能 3. ALE:Address Lat
2015-09-24 14:31:28
338
转载 对于嵌入式系统中DDRx初始化的总结
在移植bootloader到新嵌入式开发板的过程中经常会碰到初始化DDRx和DDR控制器的问题。而现在较高端的嵌入式CPU中早已集成了DDR2甚至DDR3控制器,这相较于早期使用SDRAM的CPU,在初始化的时候可能会复杂许多。再加上这些代码一般是在系统刚启动的时候运行的,通常为汇编代码,看着那一大坨汇编程序,不免有些恐惧感。但是如果对DDRx内存原理及其与DDRx控制器的关系有些了解的话,这个配
2015-09-18 11:18:34
464
转载 I/O数据总线(1)
在数据离开系统内存总线后,它通常传输到另一条总线,即主机I / O总线。在今天的产品中,最常见的主机I / O总线是P C I总线,但也存在着几种其他的总线,如S -总线,E I S A总线及V M E总线。主机I / O总线实现了几种重要的功能,包括: 允许加入新的插卡。 允许从内存总线输入和输出数据。
2015-09-18 10:27:50
415
原创 uboot relocation 重定位的总结与分析
这几天都在研究uboot的移植工作uboot-2014.7:arch/arm/lib/relocate.S具体代码分析如下:ENTRY(relocate_code)ldr r1, =__image_copy_start //镜像拷贝的源地址subs r4, r0, r1 //r0 为重定位的新地址,r4
2015-07-14 10:37:39
514
原创 u-boot杂谈
1 uboot.map文件:如果想在源码中找到 对应编译的函数,只需要在uboot.map 中搜索函数名即可,就可以锁定函数所在的文件路径.text.board_init_f 0x33f80d4c 0x114 arch/arm/lib/built-in.o 0x33f80d4c bo
2015-05-29 09:25:08
223
原创 移植 qt4.85到 N32926平台
移植qt4.8.5,首先要移植依赖库tslib-1.4下载tslib-1.4 源码首先安装软件:autoconf automake libtoolubuntu: sudo apt-get install autoconf automake libtool1)执行 ./autogen.sh2 )echo "ac_cv_func_malloc_0_nonnull=yes" >a
2015-01-12 18:25:18
588
原创 list_for_each_entry 与 mmap
#define list_for_each_entry(pos, head, member) \for (pos = list_entry((head)->next, typeof(*pos), member);\ &pos->member != (head); \ pos = list_entry(pos->member.next, typeof(*pos),
2014-08-14 09:06:02
252
原创 字符设备的驱动程序
struct cdev 是字符设备在内核的抽象struct demo_dev{// 其他成员变量struct cdev cdev;};分配cdev内存:struct demo_dev * pdev = kzalloc(sizeof(struct demo_dev),GFP_KERNEL);初始化cdev结构:void cdev_init(struct cdev *c
2014-08-13 09:19:00
47
LINUX 内核源代码情景分析(上)
2013-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人