----------------------------------------------------------------------------------
fenluoyiman : data and instruction same
hafu : data and instruct different
ITLB ICACHE pc
DTLB DCACHE Write Buff str ldr
clean <> invaildate
clean-> write to memory
invaildate <> delete the entry
permission <> mode
cope
ccla
电容 -gui yu> 电阻
占空比 一个周期内
cpld 时序转换
VD - RGB
VCLK
HSYNC
VSYNC
LCD CONTROL YAO HE JUTI DE LCD SYNC
LCD CONTROL HAVE A LCDDMA
LCDCON5 set puls
----------------------------------------------------------------------------------------------
peripler use all is physic address
dma atmoic operation have two modes
demand mode ------req is valid
handshake mode -------req vailid invalid valid invalid
sw ----- soft set register to request
hw ----- hard send request
DSP 就是一个强大的
d/a 转换器 .....
audioc dic
l3 control bus
iis transter data
ac97 can transter data and control signal
iis have host and server
LRCK left right
SCLK
SD
fs: sampling frequency)
fs 采样率 44100 hz
16 bit
32fs = 32*fs
------------------------------------------------------------------------------------------
lld arp
通过驱动层 连接 mac 和 lld
网卡:
mac
物理层:mii 物理层芯片
可以接65536个ip
cs8900 两种模式
i/o:
memory:
addr.xian connect cs8900 select . 0x19000000 is i/o mode
0x18000000 memory mode
memory control : wait is time sequence;
wait>>>>
Determines SRAM for using UB/LB for bank 5.
0 = Not using UB/LB (The pins are dedicated nWBE[3:0])
1 = Using UB/LB (The pins are dedicated nBE[3:0])
决定是否能用 strd ldrd strh ldrh
polling often use in 时据很多,很集中
interrupt often use in 即时,稀疏
IMEI 手机上网硬件码
CRC=4*8 .
usb 7wei addr
设置网卡就是设置 MAC 行文。
PromiscuousA 设置混杂模式。
----------------------------------------------------------------------------------------------------
调试
一般是程序的执行流是 通过PC在指定的。
在arm中有快 ICE 可以通过ICE来改变 程序执行流, 通过JTAG口来控制ICE, TJAG是种接口标准,
可用通过 use 转 JTAG 时序转换来控制ICE, 在程序中是使用Openocd(这是一个服务程序)来解析命令发送时序.
--------------------------------------------------------------------------------------------------------------------------
boot_loader!
vivi
redboot
blob
u-boot
------------------------------------------------------------------------------------------------
OSS
ESD 是基于oss的守护进程。
ALSA
alsa-lib
socket 返回的就是设备饿节点
socket 通过IP 找找寻、网络设备。
TTL损耗不起只能在板子上传输,远距离 损耗不起。, 差分传输/
有的 内核有mac控制器通过mii与物理层连接。
没有mac控制器就需要 有一个含有mac控制器的网卡。
cs8900 读完了变成低
1514 + 4 CRC
Cs8900 IO / memory模式。
24位决定。
为0x19。。。 为IO模式
0x18。。。 为memory模式。
-------------------------------------------------------------------------------------------------------------
ioremap() ;映射要4k对齐;
iounmap() ;
TTL pin悬空状态未定
CMOS pin悬空时为低]
volatile 防止编译器优化,,,,,,,,,,,,,,,,,,,,
下面优化后可能变为:
*p = 5;
*p = 6;
优化后:
*p = 6;
__常为于平台有关。
request_mem_region( addr ,S_$k, name );
release_mem_region( addr, len );
IS_ERR( void *point );
PTR_ERR( void *point );
-----------------------------------------------------------------------------------------------------
1. 明确问题!what how why 抽象出精髓
2.从精髓中找出思路,懒一下想出好的算法
3.为了编码简单 建立合适的数据结构 权衡需求
4.步步为赢 验证性的给出伪代码:
在这些之前最重要 的是 搭出整个程序的框架 易于代码的测试 易修改 扩展。
---------------------------------------------------------------------------------------------------------------------
u-boot 里 start.S ldr .word问题
nand write 写地址的问题
--------------------------------------------------------------------------------
b bl跳转指令
从流水线的角度看
跳一次就需要重新 刷新一次 已加载的两条指令就浪费了。
. 在汇编中才用表示当前地址
------------------------------------------------------------------------------------------
第一个是显示级别 num以下
第二个是默认级别
0
[root@sowhy arm-arch]# cat /proc/sys/kernel/printk
6 4 1 7
输出6以下级别的0信息。
echo 7 4 1 7> /proc/sys/kernel/printk
[root@sowhy arm-arch]# cat /proc/sys/kernel/printk
7 4 1 7
-------------------------------------------------------------------------------------------
编译 配置 内核
选择 arch 和编译标准
gcc -MM main.c -o xx
boot options -!
tags: record kernel boot args,
ctag.h have tags struct.
"console=ttySAC0"
---------------------------------------------------------------------------
kernel timer:
HZ
内核中 1秒中 100次时钟中断。
1个心跳大约能执行20万行c语言。
中断 设置SA_INTERRUPT 表示此中断不会被打断 也就是其他中断不会被打断。
设置 SA—SAMPLE_RANDOM 并且 irq_handler 要返回 IRQ—HANDLE。
内核的中断号在哪个文件?
在文件: /include/asm-arm/arch-s3c2410/irqs.h
小任务机制 struct tasklet 不能睡眠 保证在同一个CPU中执行。 tasklet_init
运行在中断上下文。 调度是用tasklet_schedule.
提供一种机制来 调用函数 使结构很好。
work_struct 可以睡眠
4096 的倍数 size, off
mmap( to, size, PROT_READ, MAP_SHARED, fd, off)
vm.area 段 放 mmap对应的vma。
remap_pfn_range(*vma, addr, pfn, size, prot);
pfn 页框号: addr >> 12 (4k 对齐)
高端内存没有 page 这个结构的。 和设备寄存器。
阅读(563) | 评论(0) | 转发(0) |