mitre sfr代码注解
本人最近有幸拜读mitre_sfr的代码, 把代码简单移植到VS2010, 并对代码主干进行简单的注解, 希望对后来学习mitre_sfr或SFR的人有所帮助。 CSDN最低下载资源分为1分, 所以只好挂1分, 降低大家学习的成本。 我也会开文章把原始代码和本人浅显的注解贴在上面, 不想消耗下载分的同学可以直接看这些文章。
cmake的一些小经验
初用CMake或者对其了解不太深的人,可能经常会被路径包含、库搜索路径、链接路径、RPath这些问题所绊倒,因为这些东西在手工执行gcc或者编写makefile的时候是很轻而易举的任务。
刚出炉的vim设定档
自己今天刚弄好的vim的设定文档, 备份下, 以防后续丢失
自己用的C语言的vimrc
自己用的vimrc, 自动缩进, 语法高亮等基本功能
automake示例
automake在学习时写下的示例, 供自己以后参考
autoconf部分宏示例
autoconf官方文档阅读的时候随手写下的部分宏示例, 供自己以后参考
autoconf通用程序探测宏示例
autoconf通用程序探测宏示例, 供备忘及参考。
autoconf特殊程序的探测
autoconf对特殊程序的探测的讲解和示例。 供自己备忘和供大家参考
使用autotools组织工程示例
使用autotools工具包中的autoconf, automake, 以及libtool组织的一个包含多个原码目录的helloworld工程。工程比较简单, 就不具体说明了, 供初学autotools的同学参考。
解压原码包之后按序执行./configure, make, make install, helloworld即可。
libltdl学习示意代码
自己学习libltdl时写下的示意代码, 供自己以后备忘, 同时供大家参考
libtool&automake小例子
自己在学习libtool和automake时写的一个小例子, 比较简单, 放着备忘, 同时供大家参考。
日志输出模块
日志输出模块, 在多核电脑上有少量性能的提升, 但单核上密集写性能反而下降
内核通用链表哈希链表表list.h
从内核提取出来的list.h, 通用链表, 哈希链表数据结构及操作函数, 在用户态正常使用
服务端多进程同过同一个tcp套接字与客户端通信
服务端多进程同过同一个tcp套接字与客户端通信, 打破思维定式
openwrt快速入门指南
源于网络, 回归网络
openwrt快速入门指南
DM9000 datasheet
DM9000的芯片手册, 英文版, 源于网络, 回归网络
DM9000网卡驱动
自己编写的DM9000网卡驱动(linux), 实现了网卡的基本功能, 供初学者参考。
DM9000驱动可以发送接收有问题
DM9000驱动可以发送, 但接收有问题
lydm9k-有问题
DM9000 mini2440 移植 2
linux网络协议栈(UDP收发)
本人自己对linux网络协议栈的一点分析, 对UDP接收(从网卡收包到用户态接收)和发送(一直到网卡发送)的追踪。 当然本人也是初学, 该文档实际上也是本人自己的笔记, 希望能和大家分享, 同时也希望大家能指出其中的不足。
mini2440 beer(pwm) 驱动
mini2440 beer(通常称pwm或timer)驱动,注册为misc(杂项)设备, 挂载再platform bus上, 测试信息:
U-Boot 2012.07 (Aug 30 2012 - 21:55:43)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ Welcome to my u-boot +++
+++ Liyong-zou +++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
CPUID: 32440001
FCLK: 400 MHz
HCLK: 100 MHz
PCLK: 50 MHz
DRAM: 64 MiB
WARNING: Caches not enabled
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot: 5 \0x08\0x08\0x08 4 \0x08\0x08\0x08 3 \0x08\0x08\0x08 2 \0x08\0x08\0x08 1 \0x08\0x08\0x08 0
dm9000 i/o: 0x20000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:01:02:03:04:05
could not establish link
Using dm9000 device
File transfer via NFS from server 192.168.1.30; our IP address is 192.168.1.20
Filename '/home/liyong-zou/nfs/kernel/uImage'.
Load address: 0x30008000
Loading: *\0x08#######################################################T ##########
\0x09 #################################################################
\0x09 #########################T ########################################
\0x09 #################################################################
\0x09 #################################################################
\0x09 #################################################################
\0x09 ###############T #######T ###########
done
Bytes transferred = 2164312 (210658 hex)
## Booting kernel from Legacy Image at 30008000 ...
Image Name: Linux-2.6.39.4
Created: 2012-10-27 13:48:03 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2164248 Bytes = 2.1 MiB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Linux version 2.6.39.4 (liyong-zou@liyongzou-desktop) (gcc version 4.4.3 (ctng-1.6.1) ) #86 Sat Oct 27 21:47:46 CST 2012
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=00007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, Copyright 2004 Simtec Electronics
S3C244X: core 400.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: noinitrd root=/dev/nfs nfsroot=192.168.1.30:/home/liyong-zou/nfs/rootfs ip=192.168.1.20:192.168.1.30:192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,115200
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60500k/60500k available, 5036k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc4800000 - 0xf6000000 ( 792 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc002a000 ( 136 kB)
.text : 0xc002a000 - 0xc03f3ea4 (3880 kB)
.data : 0xc03f4000 - 0xc0418c40 ( 148 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:85
irq: clearing subpending status 00000002
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 49.56 BogoMIPS (lpj=123904)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
gpiochip_add: gpios 288..303 (GPIOK) failed to register
gpiochip_add: gpios 320..334 (GPIOL) failed to register
gpiochip_add: gpios 352..353 (GPIOM) failed to register
NET: Registered protocol family 16
MINI2440: Option string mini2440=0tb
MINI2440: LCD [0:240x320] 1:800x480 2:1024x768
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C244X: Clock Support, DVS off
bio: create slab <bio-0> at 0
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c-i2c s3c2440-i2c: slave address 0x10
s3c-i2c s3c2440-i2c: bus frequency set to 97 KHz
s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
Advanced Linux Sound Architecture Driver Version 1.0.24.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
JFFS2 version 2.2. (NAND) \0xc2\0xa9 2001-2006 Red Hat, Inc.
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 118
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
Console: switching to colour frame buffer device 60x53
fb0: s3c2410fb frame buffer device
backlight initialized
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
mini2440_beer# register OK
s3c2440_adc# register W1 OK
at24 0-0050: 1024 byte 24c08 EEPROM, writable, 16 bytes/write
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=1, 10ns Twrph0=3 30ns, Twrph1=2 20ns
s3c24xx-nand s3c2440-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
Creating 5 MTD partitions on "nand":
0x000000000000-0x000000080000 : "u-boot"
0x000000080000-0x0000000a0000 : "u-boot-env"
0x0000000a0000-0x0000006a0000 : "kernel"
0x0000006a0000-0x0000046a0000 : "root"
0x0000046a0000-0x000010000000 : "extend"
dm9000 Ethernet Driver, V1.31
eth0: dm9000e at c4872300,c4876304 IRQ 51 MAC: 00:01:02:03:04:05 (chip)
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
mousedev: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
input: mini2440_ts as /devices/platform/mini2440_ts/input/input1
mini2440_ts# register OK
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c-rtc s3c2410-rtc: rtc disabled, re-enabling
s3c-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
i2c /dev entries driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
s3c-sdi s3c2440-sdi: powered down.
s3c-sdi s3c2440-sdi: mmc0 - using pio, sw SDIO IRQ
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
ALSA device list:
No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
Registering the dns_resolver key type
s3c-rtc s3c2410-rtc: setting system clock to 2000-02-26 23:38:54 UTC (951608334)
dm9000 dm9000: eth0: link down
IP-Config: Complete:
device=eth0, addr=192.168.1.20, mask=255.255.255.0, gw=192.168.1.1,
host=192.168.1.20, domain=, nis-domain=(none),
bootserver=192.168.1.30, rootserver=192.168.1.30, rootpath=
dm9000 dm9000: eth0: link up, 100Mbps, full-duplex, lpa 0x4DE1
VFS: Mounted root (nfs filesystem) on device 0:14.
Freeing init memory: 136K
Please press Enter to activate this console.
Liyong-zou
[root@Liyong-zou /]#/home/test_beer
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:1
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:6
and type the arg:100
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:6
and type the arg:99
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:22
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:1
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:6
and type the arg:50
please type operation:
\0x09type 0 to exit
\0x09type 1 to start beer
\0x09type 22 to stop beer
\0x09type 3 to set prescaler(1~256)
\0x09type 4 to set divier(2/4/8/16)
\0x09type 5 to set freq(20~20000)
\0x09type 6 to set pwm(0~100)
\0x09what are you want:0
[root@Liyong-zou /]#
arm-linux-gcc-4.4.3
arm-linux-gcc-4.4.3的安装源码, 本人已经安装成功了, 安装方法网上很多, 具体不介绍了
s3c2440 DataSheet
s3c2440 datasheet, 有些中文的datasheet翻译得有误, 这个文档相对比较准确
linux SD卡驱动分析
SD 卡驱动分析...................................................................................................................................1
块请求处理(linux/driver/mmc/card).....................................................................................2
1.probe.................................................................................................................................................2
2.do_request......................................................................................................................................13
3.小结................................................................................................................................................24
core 层处理(linux/driver/mmc/core)...................................................................................25
1.core 层初始化................................................................................................................................25
2.mmc_claim_host............................................................................................................................28
3.mmc_release_host..........................................................................................................................31
4.mmc_wait_for_req.........................................................................................................................33
5.mmc_wait_for_cmd.......................................................................................................................35
SD 控制器之初始化(linux/driver/mmc/host).....................................................................37
core 层续集之 mmc_add_host..................................................................................................49
SD 控制器之真正的硬件操作.................................................................................................82
1.s3cmci_get_ro................................................................................................................................83
2.s3cmci_set_ios...............................................................................................................................84
3.s3cmci_request 之命令处理..........................................................................................................86
4.s3cmci_request 之数据传输..........................................................................................................97
小结.........................................................................................................................................113
mini2440 ADC+触摸屏驱动
mini2440的ADC驱动和触摸屏驱动, 包括修改后mini2440的BSP(linux-2.6.39.4).
ADC驱动注册为misc device, 挂载再platform bus
触摸屏驱动注册为input device, 挂载再platform bus上, 并根据官方自带的BSP进行修改, 使它隶属于option peature。
测试信息:
#/home/readadc
adc value: 416
Do you want to read again?n
#/home/test_input
Type is 1, code is 330, value is 1.
ABS_PRESSURE = 1
x = 201.
y = 327.
Type is 0, code is 0, value is 0.
x = 200.
y = 329.
Type is 0, code is 0, value is 0.
x = 201.
y = 330.
Type is 0, code is 0, value is 0.
y = 326.
Type is 0, code is 0, value is 0.
x = 206.
y = 319.
Type is 0, code is 0, value is 0.
x = 211.
y = 314.
Type is 0, code is 0, value is 0.
x = 219.
#/home/readadc
adc value: 416
Do you want to read again?n
mini2440(s3c2440)ADC驱动和测试代码
mini2440的ADC驱动代码, 隶属于platform bus和miscdevice, 与网上能检索到的基于FriendlyArm的代码不太相同, 有兴趣的朋友可以下载了相互学习。
测试信息:
#/home/readadc
adc value: 417
Do you want to read again?y
adc value: 417
Do you want to read again?y
adc value: 578
Do you want to read again?y
adc value: 685
Do you want to read again?y
adc value: 415
Do you want to read again?n
mini2440按键驱动及测试程序
mini2440的按键驱动, 展示了input子系统和platform driver的编写方法, 浓缩了kernel自带的gpio-keys驱动, 更清楚得展示驱动的编写过程, 并附带了测试程序, 最适合学习是借鉴。 测试信息:
Type is 1, code is 59, value is 1.
Type is 0, code is 0, value is 0.
Type is 1, code is 59, value is 0.
Type is 0, code is 0, value is 0.
Type is 1, code is 60, value is 1.
Type is 0, code is 0, value is 0.
Type is 1, code is 60, value is 0.
Type is 0, code is 0, value is 0.
Type is 1, code is 61, value is 1.
Type is 0, code is 0, value is 0.
Type is 1, code is 61, value is 0.
Type is 0, code is 0, value is 0.
Type is 1, code is 63, value is 1.
Type is 0, code is 0, value is 0.
Type is 1, code is 63, value is 0.
Type is 0, code is 0, value is 0.
Type is 1, code is 116, value is 1.
Type is 0, code is 0, value is 0.
Type is 1, code is 116, value is 0.
Type is 0, code is 0, value is 0.
Type is 1, code is 64, value is 1.
Type is 0, code is 0, value is 0.
Type is 1, code is 64, value is 0.
Type is 0, code is 0, value is 0.
input子系统
linux驱动上input子系统的简略分析, 并附有按键驱动实例, 来源网络, 回归网络
linux字符设备驱动(与初学者分享)
自己练习时写的虚拟字符设备驱动, 实现并发控制/阻塞/select/poll, 与初学者分享, 很基础, 并附有较详细的注解。
最新u-boot:u-boot-2012.07 mini2440移植(nandflash启动)
本人原创, 最新u-boot-2012.07 mini2440基于nandflash启动的移植, 新鲜出炉, 与旧版本不同, 本资源是基于nand_boot函数移植的, 应该说这种移植方法才是u-boot官方推荐的nandflash启动方法。
不多吹了, 见运行截图:
U-Boot 2012.07 (Aug 25 2012 - 22:14:38)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ Welcome to my u-boot +++
+++ Liyong-zou +++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
CPUID: 32440001
FCLK: 400 MHz
HCLK: 100 MHz
PCLK: 50 MHz
DRAM: 64 MiB
WARNING: Caches not enabled
NAND: 256 MiB
In: serial
Out: serial
Err: serial
Net: dm9000
MINI2440 #
S3C2440中文手册
S3C2440中文手册, 没什么好多说的
U-Boot启动过程--详细版的完全分析
网上刚找的文章, 浏览了一边, 很不错, 深入浅出, 即使新手也很容易读懂
自己写的ARM嵌入式操作系统
这是一个自己边学边写的嵌入式操作系统(基于ARM S3C2410)。
代码刚写完测试好, 结构还没好好整理, 有点乱, 并且很多参考书上的内容,加上自己的修改。 后续我会花点时间好好整理, 再次上传。
主要内容:
1. 系统启动
2. 打印函数
3. 中断处理
4. 内存管理
5. 驱动程序框架
6. 文件系统框架
7. 运行客户程序
8. 多任务
9. 测试代码