- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 linux-3.12.48内核向at91sam9g25平台移植小结
linux-3.12.48内核向at91sam9g25平台移植小结从5月底开始进行着手向9g25平台移植新的内核,到国庆开假后完成内核的移植(一些bsp底层驱动程序下一步完成)用时四个月有余的业余时间方完成这一工作,这中间又有大部分时间没能利用起来,如果是工作时间来做的话,应该也需要一个月的时间吧。移植的过程中走了弯路,首先是内核版本选择上:开始时选择了最新的内核l
2015-10-10 17:09:13
2861
1
原创 at91sam9g25处理器uboot移植 个人笔记一
1 生成补丁 与 打补丁 生成补丁 diff -upNr old/ new/ > patch-x.y.z diff -upNr u-boot-2014.07/ u-boot-2014.07_moveto9g25/ > moveto9g25-2015.08.25-ok.patch 打补丁 cd old patch -p1 ----------
2015-08-25 17:40:05
3349
原创 个人总结日记:ltv350三星LCD并行接口接2440处理器的linux驱动程序移植
ltv350三星LCD并行接口接2440处理器的linux驱动程序移植总体上分三步:1> framebuffer_alloc函数分配一个fb_info类型的结构体该结构体用于填充描述使用的液晶参数,比如像 像素类型,是否有硬件加速,长宽,每个像素的位数,调色板等。其中主要填充fix与var这两个成员结构体变量,这两个结构体在应用程序中可以通过ioctl函数的命令字
2014-12-23 20:42:07
976
原创 位置无关代码码与位置相关代码
位置无关代码码与位置相关代码 位置无关与位置相关代码是关于arm程序在跳转时的寻址方式的两种,一般情况下两种方法都能达到跳转到目的地址的目标,但是在某些特定的环境下,两种跳转方法得到的结果相关较大。位置无关代码的跳转可通过“B或BL 标号”命令执行,当执行B或BL命令实现跳转时,实际的二进制代码在跳转时是执行:计算可执行代码中目标地址到当前PC值处的距离,然后把该距离值加上当前的PC
2014-09-20 17:58:06
3036
原创 两个老外婆过河,函数递归解法
#include#includechar start[7] ={'a','a','a','0','b','b','b'};char end[7] ={'b','b','b','0','a','a','a'};char stack[1000][7];char stack_top=0;void debug_stack(){ int index; for(index=stack_
2014-07-16 21:37:07
841
原创 Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_kernel() --2>setup_arch(&command_line);//该函数位于arch/arm/kernel/setup.c //在这个函数中定义了一个描述
2013-08-14 17:30:31
1269
原创 linux内核init启动过程分析(一)
linux内核启动过程分析(一)从 源码目录/init/main.c开始分析asmlinkage void __init start_kernel(void) //__init表示这个函数的代码放在__init段中,这个段在arch/arm/kernel/vmlinux.lds.S链接文件中定义 1-> ......中间省略了很多其他的初始化设置 1-> rest_init()
2013-05-30 21:37:36
1811
原创 linux设备驱动之 i2c设备驱动 at24c08驱动程序分析
linux-2.6.22源码分析\linux-2.6.22\drivers\i2c\chips\eeprom.c为例,分析i2c设备驱动程序的原理1.从驱动的入口函数开始分析 eeprom_init >i2c_add_driver(&eeprom_driver) >i2c_register_driver(THIS_MODULE, driver)
2013-01-09 18:19:43
1740
原创 dm9000网卡的linux驱动分析
分析内核自带的dm9000网卡驱动程序: static struct platform_driver dm9000_driver = { .driver = { .name = "dm9000", .owner = THIS_MODULE, }, .probe = dm9000_probe
2012-12-27 19:35:44
887
原创 linux块设备驱动程序分析之 nor flash驱动分析 以及使用内存模拟 nor flash
struct map_info { char *name; unsigned long size; resource_size_t phys;#define NO_XIP (-1UL) void __iomem *virt; void *cached; int bankwidth; #ifdef CONFIG_MTD_COMPLEX_MAPPINGS map_w
2012-12-25 18:03:50
1796
原创 linux块驱动程序分析 之 nand flash 驱动编写过程分析
内核版本号:linux-2.6.22块设备程序: driver/mtd/mtdblock.c1 从驱动的注册函数开始分析 a.先定义并初始化一个全局变量 mtdblock_tr static struct mtd_blktrans_ops mtdblock_tr = { .name = "mtdblock", .major = 31, .part_b
2012-12-24 11:31:48
1356
原创 linux块设备驱动之make_request与request 分别创建内存虚拟磁盘
APP:read write 文件 保存到磁盘--------------------------------(文件系统)VFS虚拟文件层--------------------------------block块驱动 core核心驱动程序--------------------------------硬件相关的驱动程序,完成扇区的读写文件系统调用底层驱动:ll_r
2012-12-21 12:03:12
2434
原创 LCD驱动设计与分析 --GQ2440+LTV350QV_F04 + LINUX2.6.22内核
LCD使用的是LTV350QV_F04 参数设置见4_th_ok程序中的设置 程序中使用了 .fb_fillrect = cfb_fillrect, .fb_copyarea = cfb_copyarea, .fb_imageblit = cfb_imageblit,三个由驱动模块提供的函数:所以:make menuconfig----->device driver ----> graph
2012-12-15 16:04:51
2034
原创 移植Linux-2.6.22到GQ2440上
移植 linux-2.6.22 1 解压 find -name "*defconfig" 修改顶层 Makefile ARCH ?= arm CROSS_COMPILE ?= arm-linux- make s3c2410_defconfig make menuconfig make uImage tftp 下载到sdram 运行,乱码2 修改代码
2012-12-15 16:04:49
979
原创 移植Linux-3.4.2到开发板gq2440
移植 linux-3.4.2 笔记 1. tar -xjf linux-3.4.2.tar.bz2 cd linux-3.4.2 修改Makefile find -name "*defconfig" 列出所有默认的开发板的配置 make s3c2410_defconfig 在顶层目录生成.config make menuconfig make uImage
2012-12-15 16:04:46
1446
原创 uboot-2012-4.1移植 (2)修改uboot代码
3 修改代码 a 修改start.s中时钟设置部分。 /*修改这里,时钟设置不正确*/ /* FCLK:HCLK:PCLK = 1:4:8 */ /*设置时钟*/ ldr r0,=0x4c000014 mov r1,#0x05 str r1,[r0] /* 如果HDIVN非0,CPU的总线模
2012-12-15 16:04:44
1249
原创 uboot-2012-4.1移植 (一)分析uboot
1 cd board/samsung/ cp smdk2410/ smdk2440/ -rf cp smdk2410.h smdk2440.h cd ../../ 修改boards.cfg 仿照 smdk2410 arm arm920t - samsung
2012-12-15 16:04:42
663
原创 ARM的step内存到SDRAM内存代码复制程序调试之罪魁祸首 ADR与LDR
start.S启动的汇编代码#define S3C2440_MPLL_200MHZ ( (0x5C#define MEM_CTL_BASE 0x48000000 .text.global _start_start: /*1关看门狗*/ mov r0,#0x53000000 mov r1,#0 str r1,[r0] /*2设置时钟*/ ldr r0,=0x4C000014 mov r1,#
2012-12-15 16:04:40
666
原创 我常用的Linux指令
1 登录字符登录 CTRL+ALT+F1 图形登录 CTRL+ALT+F72 添加用户 useradd 用户名3 修改密码 passwd [选项] [用户名]4切换用户 su [选项][用户名]5 关机 shutdown now6拷贝 cp [选项][源文件或目录 目的地] 拷贝目录 cp -r *** ***7 移动或更名 mv [选项] *** *** 相当于剪切8 删除
2012-12-15 16:04:38
411
原创 PIC18F4520的ADC与LCD1602显示程序
/*说明:该程序使用的开发环境为:microchip公司的MPLAB X IDE v1.41、mplabc18-v3.40 在该环境下编译成功、在proteus7.5中进行仿真成功。 ADC使用的是通道1,液晶模块的RS、R/W、E、D0~D7与PIC18F4520的C0、C1、C2、RD0~RD7 相连接。仿真时,RE3需要拉高电平,否则AD转换无法进行。*/#in
2012-12-15 16:04:36
2923
原创 PIC18F4520单片机AD转换程序与注释
/*包含头文件:该头文件位于D:\Program Files\Microchip\mplabc18\v3.40\h下,这下面是不同型号的单片机的头文件定义,使用时把相应的头文件包含进来就可以了*/#includeconst unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴型数据管0-9的字段
2012-12-15 16:04:34
5081
原创 2多线程的阻塞、唤醒与同步
转载!原文: http://apps.hi.baidu.com/share/detail/19786281 http://hi.baidu.com/boobleoo0/blog/item/5f935039a37c58f8b311c77f.html http://topic.youkuaiyun.com/u/20110105/16/12717238-9816-4571-a03d-e8b603724946.ht
2012-12-15 16:04:32
567
原创 1 red hat linux 9下建立C开发环境
今天,老板给了个2410的试验箱,让我搞一下。实验指导书上用的是red hat linux 9。我本不想用这个linux,年代太久了,而且也很丑,个人观点。打算用red hat enterprise 5.可是NFS挂载总是出问题。挂上后,运行主机上的程序或拷贝东西时,就卡住了!很郁闷,最后也没有解决。可能是实验箱上用的也是Linux2.4的内核的原因吧。于是我也换成了red hat linux 9
2012-12-15 16:04:29
543
原创 字符型驱动1 注册加载与卸载,读写与控制IOCTL的使用
/* 关于内核模块读写函数中的最后一个参数loff_t *f_pos的说明: 这个参数的默认值为0,该变量一但修改后,再使用读 或 写函数时,这个参数的值就是修改后的值。 可以用这个值来修改copy_to_user copy_from_user 的指针的偏移。 另外对于file->f_pos 这个值默认也是0,如果没有手动修改它,它会一值为0。 使用这个变量也可以修改上述两个函数的指针的
2012-12-15 16:04:27
558
原创 ADS中防止全局变量被优化
在ADS中,当你定义了一个全局变量时,在使用的过程中,尤其是在判断这个变量时,一定要小心全局变量被优化! 因为当你的程序判断这个全局变量时,而这时你的这个全局变量恰好被别的外设或中断给修该了。。。这时你就悲剧了,虽然你的程序逻辑上是没有问题的,但是由于编译器会对你的代码做出优化!所以编译出来的程序不会对这种情况(外设或中断修改了全局变量)做出你想要的反应。 怎么解决这个问题呢?ADS中给出了一
2012-12-15 16:04:25
1457
原创 关于ARM7软中断的那个小事 2011年11月25日
1 读取软中断标号的方法: 软件中断由专门的软中断指令SWI 触发,SWI 指令后面跟一个中断编号,以标识可能共存的多个软件中断程序。在C 程序中调用软件中断需要用到编译器的扩展功能,使用关键字“__swi”来声明中断函数。注意软中断号码同时在函数定义时指定。__swi(0x24) void my_swi (void);这样当调用函数my_swi 的时候,就会用“SWI 0x24”来代替普通的
2012-12-15 16:04:23
596
原创 51上移植UC/OS II 2011年11月12日
在keil c移植UCOSII有两个比较特殊的地方。1、局部变量的覆盖问题。2、函数的再入性问题。下面我就这两方面谈一下自己的体会。1、关于局部变量的覆盖。在PC机上的C编译器,一般是这样,在函数调用时临时给局部变量在堆栈空间中分配地址,函数返回后释放在堆栈中分配的空间。如果一个函数被递归调用,每次调用时局部变量分配的地址空间都不相同,因此不存在局部变量被覆盖的问题。又由于局部变量是分配在堆栈空间
2012-12-15 16:04:21
540
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人