-
Notifications
You must be signed in to change notification settings - Fork 2
/
log200903.txt
278 lines (232 loc) · 19.6 KB
/
log200903.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
11:16 2009-3-2
嵌入式, 手机方案, Android
周末在家编译Android, 最后到了core tests, 跑了一晚上也没跑完. 难道是自动启动了Emulator? <TODO>晚上回家实验</TODO>
17:50 2009-3-2
嵌入式, Linux, 调试, GDB server
请问arm下有啥好的调试工具
自: http://linux.chinaunix.net/bbs/thread-1063688-1-1.html
bamvor回帖:
gdbserver是gdb的一部分, 是gdb在板子上运行的服务程序, gdbserver通过串口或网络等与PC机gdb连接. 有gdbserver后, PC上运行的gdb和pc下直接使用gdb调试完全一样. 网上有很多帖子介绍gdbserver的编译和使用, 我就不废话了.
不过如果LZ用gdb调试共享库我就找到这么一个办法: "用gdbserver调试共享库(改进版)", 网址: "http://blog.csdn.net/absurd/archive/2007/09/20/1793646.aspx".
网上也有人直接在arm上用gdb调试, 据说速度慢些.
生成core file后可以在PC机上用arm-linux-gdb查看.
最近还看到个调试方法: KFT(Kernel Function Tracing), 正打算尝试, LZ可以参考:
1, "http://blog.csdn.net/colorant/archive/2008/07/14/2648338.aspx", 文中也提到对arm linux支持不好, 需要调整部分代码.
2, http://elinux.org/Kernel_Function_Trace
3, ftp://dslab.lzu.edu.cn/pub/kft/, KFT download
9:57 2009-3-3
<TODO></TODO>:
1, audio
2, 线与与总线仲裁, 查书. 结合I2C abiter, I2C abiter应该是仲裁master抢slave的情况.
3, 下载到FPGA的那个文件叫什么文件?
4, mmc cmd open drain.
13:00 2009-3-5
Linux开发, 调试, oops, 定位oops的具体代码行, <TODO>实验</TODO>
位置: "bamvor张健的文档\micro微电子与计算机\Embeded嵌入式系统\软件设计\OS操作系统\linux\内核"
自: http://linux.chinaunix.net/bbs/viewthread.php?tid=1063514&extra=page%3D1
来自Linus Torvalds的讨论:
https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111
20:07 2009-3-5
Linux, 驱动, 中断, 文章整理
1, 中断絮说--中断机制和Linux RTC中断示例by陈莉君=++
位置: "bamvor张健的文档\micro微电子与计算机\Embeded嵌入式系统\软件设计\OS操作系统\linux\驱动"
陈莉君老师写的中断絮说(经典+幽默)
自: http://blog.csdn.net/freedom1013/archive/2007/04/10/1559678.aspx
20:52 2009-3-5
嵌入式, Linux, 模拟器, Skyeye
下载skyeye1.2.7RC1, 现在修改map.h和memory.h两行代码后已经可以引导自己编译的Linux2.6.25.20 s3c2410x了, 但是引导s3c2440还是有问题, 在"运行0xc0008000映像"(中文大意, 没存log)这行之后就没有了信息, 有空调试一下, 希望是和我自己的YC2440共有一套内核和文件系统, 同一份映像二者都可以运行, 至少达到内核代码统一(除了上面两行), 文件系统使用同一映像)
CPU, arm926ejs
Arm_arch_interface.c (arch\arm\common): {"armv5", "arm926ejs", 0x41069260, 0xff0ffff0, INSTCACHE},
SOC, s3c2440(arm920t):
Arm_arch_interface.c (arch\arm\common): {"s3c2440", s3c2440_mach_init, NULL, NULL, NULL}, /* s3c2440 */
今天看了代码, 发现skyeye支持arm926ej-s, 目前支持"omap5912 osk"和"NetSilicon ns9750"不过这两个SOC都比较老, 其中TI已经不支持omap5912了. 不过既然实现了, 估计也经过了测试, 将来移植新的arm926ej-s SOC还是有可能的.
15:58 2009-3-6
网上订蛋糕, waffleboy 窝夫小子
http://www.waffleboy.com.cn/Products/sp_index.asp?page=2
23:20 2009-3-7
嵌入式, Linux, 移植
1, gsteamer
下面这个博客有gstreamer和Linux移植的一些资料.
http://f170.blogspot.com/search?updated-min=2008-01-01T00%3A00%3A00-08%3A00&updated-max=2009-01-01T00%3A00%3A00-08%3A00&max-results=44
2, 移植Android到华硕PDA P535上:
Android 1.0移置到华硕P535
http://www.androidin.com/android/200812/29-308.html
3,移植 Linux kernel 2.6.25 (Android 版本) 到 SAMSUNG S3C2440A
http://wizign.blogspot.com/2008/11/linux-kernel-2625-android-samsung.html?showComment=1229438700000#c3431266387579278030
TouchScreen driver has been done - 移植 Linux kernel 2.6.25 (Android 版本) 到
SAMSUNG S3C2440A
http://wizign.blogspot.com/2008/12/touchscreen-driver-has-been-done-linux.html?showComment=1229227800000#c200277050909530859
文中提到的"cclfs-embedded-bootscripts-1.0-pre4.tar.bz2"位置: http://ftp.cross-lfs.org/pub/clfs/conglomeration/clfs-embedded-bootscripts/.
<TODO>看这个博客; 关注clfs, 可能对Linux移植有帮助</TODO>, clfs相关链接:
http://trac.cross-lfs.org/wiki
http://ftp.cross-lfs.org/pub/clfs/clfs-packages/embedded-0.0.1/
4, 【原创】Android的Camera架构介绍(hanchao3c)
http://www.androidin.com/bbs/viewthread.php?tid=2708&extra=page%3D1
12:56 2009-3-9
Linux开发, 源代码分析/阅读, 函数调用关系, 工具, 试验, 续, <TODO></TODO>, 自"10:40 2009-2-27"
所有相关函数调用资料位置: "bamvor张健的文档\micro微电子与计算机\Embeded嵌入式系统\软件设计\软件开发工具\函数调用关系_流程图"
-1, 眼前需要的脚本:
1), func1调用的所有函数. 所有调用func2的函数.
func1 -> func2的调用路径.
2), 分层函数调用关系图: 对于sd这样分层明显的代码, 可以用graphviz的rank功能分层, 参见"dotguide.pdf"p18-p19. 自"12:56 2009-3-9"
3), 类似"g_SdCardDrv.WriteMultSector"这种指针应该容易处理, 实验. "D.10535"
0, 考虑到应用
1), 目前需要运行时分析的, 下周评估可否把kft或类似东西移植到公司项目上, 对于以后调试有用, 而且能和我的Linux经验结合起来.
2), 编译时分析的精力下一阶段放到SSA上, RTL问题不深入分析了.
1, 目前主要精力放在Linux kernel的call graph, trace, debug这类工具上:
关注三个:
1), kft: 目前只支持到Linux2.6.26 x86, 可以看内核启动和内核启动后(通过proc文件系统)的函数调用关系.
2), ftrace: red hat于Linux2.6.27 rc1加入, 参见内核文档\ftrace.txt, 没看到能不能看内核启动过程log. 另外ftrace生成的调用关系图类似于tree命令格式, 本身已经很易读了, 如果能借助自动脚本生成dot图就更好了, 但是dot图没法保证调用关系这点不太好. 不行就得借助其他工具.
3), kgdb. Liao zhicheng他看到Linux2.6.26已加入kgdb, 而且支持arm.
看文档"linux-2.6.27.19\Documentation\DocBook\kgdb.tmpl". 结合文档, arm已经支持kgdb(arch\arm\kernel\kgdb.c), 使用kgdb的kgdboc工具需要为串口驱动加入两个poll函数. 这两个函数要求能在原子上下文调用, 函数退出时应该恢复uart原有状态, 目前s3c2440串口未直接实现这两个函数, 应该可以使用serial_core.c的通用函数, <TODO>实验</TODO>. 详见原文:
The kgdboc driver is actually a very thin driver that relies on the underlying low level to the hardware driver having "polling hooks" which the to which the tty driver is attached. In the initial implementation of kgdboc it the serial_core was changed to expose a low level uart hook for doing polled mode reading and writing of a single character while in an atomic context. When kgdb makes an I/O request to the debugger, kgdboc invokes a call back in the serial core which in turn uses the call back in the uart driver. It is certainly possible to extend kgdboc to work with non-uart based consoles in the future.
When using kgdboc with a uart, the uart driver must implement two callbacks in the <constant>struct uart_ops</constant>. Example from drivers/8250.c:
#ifdef CONFIG_CONSOLE_POLL
.poll_get_char = serial8250_get_poll_char,
.poll_put_char = serial8250_put_poll_char,
#endif
Any implementation specifics around creating a polling driver use the #ifdef CONFIG_CONSOLE_POLL, as shown above.
Keep in mind that polling hooks have to be implemented in such a way that they can be called from an atomic context and have to restore the state of the uart chip on return such that the system can return to normal when the debugger detaches. You need to be very careful with any kind of lock you consider, because failing here is most going to mean pressing the reset button.
2, <TODO>改进</TODO>:
1), <DONE>忽略Msg.
2), <DONE>能不能规定顺序呢? 可能用行号比较好? graphviz不行, 但可以利用rank划分层次关系.
3), 分析*.expand文件, 目前知道如何处理结构体的函数指针了, 详见"14:00 2009-2-17".
但是还不会处理:
4), "(*call)();"的处理。
5), 宏替换. 宏替换是在预处理中完成的. 所以直接利用expand文件最多是有可能知道宏6换后到底有没有调用函数. 如果想处理宏替换可能需要codeviz那样修改gcc的思路.
6), 内联函数的处理.
7), 加入对"^.*"的处理. 改egypt脚本, "if (/^.*\(call.*"(.*)".*$/) {"是处理".*"的.
3, <TODO>开发</TODO>
0), 对于sd这样分层明显的代码, 可以用graphviz的rank功能分层, 参见"dotguide.pdf"p18-p19.
1), codeviz能不能列出某函数由多少函数调用?
2), <TODO>Zhou dashan对Perl较熟悉, 可以问问他Codeviz脚本能不能在windows下直接执行(找不到DB_file.pm).</TODO>
属性仍然用"<>"表示. 例如<重要>, 表示此函数重要, 需要突出显示.
自己的流程图好处是要把注释加进去. 加入注释要区分加到线上还是节点上. 如果是两个函数调用同一个函数, 但调用作用不同, 写在edge上就比较合理.
改进egypt也可以是把函数的注释画到调用关系图或者流程图中.
<TODO>确认</TODO>: egypt有个缺点, 似乎只能分析c语言的调用关系, 不支持c++.
4, <TODO>试验</TODO>
0), 其实我感觉egypt的方法在理论上应该是很好用的, 但文件重名太多, 不利于分析.
而且脚本过于简单, 图形不好看. 毕竟我们现在分析代码, 很多时候没法运行.
问题一, 考虑改造内核Makefile: 建立新的%o:%c规则, 每次编译后都为expand文件加上路径名.
问题二可以参考其它工具解决.
0),graphviz生成图示例, <TODO>下载</TODO>
http://www.graphviz.org/Gallery.php
1), 感觉codeviz生成的调用关系好看一些. 缺点是只能与gcc3.4.1配合, 可以考虑参考codeviz提供的genfull, gengraph两个脚本.
2), KFT(Kernel Function Tracing), 对于2.6.22之前的内核对arm有支持, 可以参考"http://blog.csdn.net/colorant/archive/2008/07/14/2648338.aspx", 移植和使用内核函数跟踪系统KFT. 文中也提到对arm linux支持不好, 需要调整部分代码.
这个可能适合将来进行运行时内核跟踪.
http://elinux.org/Kernel_Function_Trace
ftp://dslab.lzu.edu.cn/pub/kft/, KFT download
3), gprof:
(1),http://oss.lzu.edu.cn/modules/newbb/viewtopic.php?viewmode=thread&topic_id=884&forum=13&type=, 使用Gnu gprof进行Linux平台下的程序分析
(2), http://os.51cto.com/art/200703/41426_1.htm, 使用gprof和graphviz分析函数调用关系.
4), CFlow是通过源代码进行的静态分析并且 不能分析C++ 程序,你可以到http://www.gnu.org/software/cflow/去下载源代码。
5), 综述资料, <TODO>下载</TODO>:
(1), "http://blog.csdn.net/zsm180/archive/2009/01/15/3789464.aspx", "各类分析函数调用关系图的工具", 这篇文章很好. 里面有很多工具和有用的脚本.
(2), "http://icl.pku.edu.cn/yujs/BSDFiles/html/mpost.html", "UNIX下绘图面面观", 同样是综述文章, 也很好用.
6), 绘图工具MetaPost:
自: http://icl.pku.edu.cn/yujs/BSDFiles/html/MetaPost.html
GnuPlot与MetaPost
在类UNIX操作系统中,值得掌握的绘图语言有两个。一个是GnuPlot,它是基于函数的绘图语言,譬如三角函数 sin(x)等,很多数学软件选用它作图形输出接口(如著名的octave等);另一个是MetaPost,它是基于描述的绘图语言,譬如由三个给定的点构成的三角形等。MetaPost由贝尔实验室的John Hobby设计,是功能最强大的描述绘图语言。FreeBSD提供的teTeX缺省地带着命令mpost,无需安装。补充一句,GnuPlot可以输出 MetaPost文件,二者可以联手成为绘图工具不二之选。
为何用MetaPost?
为什么我选用MetaPost,而不是Xfig、Dia或其他的所见即所得的绘图软件?首要的原因是我迷恋精确,而 MetaPost是最精确的,精确到像素。如果对图形的精确性没有太多的要求和追求,大可不必选择MetaPost,把时间浪费在编程上。Xfig和 Visio足够满足很多用户的需求。另外一个原因是MetaPost生成的eps文件可以很好地嵌入TeX文件,从而得到图形清晰的高质量的pdf文件— 这对用TeX写作的理工科学生和学者来说,非常具有诱惑力。
5, <TODO>能不能得到流程图呢?</TODO>
6, <TODO>dia</TODO>
dia官网: http://live.gnome.org/Dia. GNU的visio, 支持Linux/Windows.
7, profile, profiling分析工具:
kprof, http://kprof.sourceforge.net/
gprof, http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.4995
http://oss.lzu.edu.cn/modules/newbb/viewtopic.php?viewmode=thread&topic_id=884&forum=13&type=
9:42 2009-3-10
嵌入式, arm, Linux, arm26与arm
问问 文件夹 asm-arm26与asm-arm的区别
自: http://linux.chinaunix.net/bbs/viewthread.php?tid=1064779
回帖:
arm26目录支持早期使用26位地址的arm处理器. arm目录支持使用32位地址的arm处理器. arm系统结构中armv1, armv2都只支持26位地址. 从armv3到现在armv7(Cortex)支持32位地址.
9:55 2009-3-10
嵌入式, Linux, mmap出错, <TODO>关注</TODO>
在最新的内核2.6.28.7下,使用
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=linuxK&Number=587187&page=0&view=collapsed&sb=5&o=all&fpart=
的代码测试,不成功!
mmap提示:mmap: Invalid argument
内核提示:
Program u tried to access /dev/mem between 365eb000->365ec000.
在2.6.24.7下,测试成功。
有人遇到过这种情况吗?什么原因?
谢谢!
3楼 发表于 2009-3-6 04:19
回复 #1 guotie 的帖子
似乎从2.6.26开始,内核增加了对通过/dev/mem访问全部内核空间的限制。
你可以试试:sysctl dev.mem.restricted=0
不行的话可以通过重新编译内核,关闭CONFIG_STRICT_DEVMEM
4楼 发表于 2009-3-6 08:37
没有 dev.mem.restricted选项,CONFIG_STRICT_DEVMEM is not set
bamvor: LZ提到的文章已保存"[精华] 用户态和内核共享内存--最简单的例子=+.txt", "bamvor张健的文档\micro微电子与计算机\Embeded嵌入式系统\软件设计\OS操作系统\linux\内核"
13:09 2009-3-10
嵌入式, arm, 调试工具, openocd; 总结, 文档
看了看去年买的openjtag板子到底是怎么和openocd连接的. 相关资料位置: "bamvor张健的文档\micro微电子与计算机\Embeded嵌入式系统\jtag\openjtag"
openjtag结构如下:
eclipse
|
arm-gdb
|
openocd --- jtag转接板 --- arm开发板
(ft2232: usb转串口)
其它的都好理解, 我比较关心这个jtag转接板, 上网查了相关工具, 原来是这样的:
openocd是个开源的调试工具, 通过jtag接口连接到开发板, 支持wiggle, ft2232等多种jtag接口, 其中只有ft2232与PC通过usb接口连接. ft2232是一个usb2serial芯片, 通过MPSSE( Multi-Protocol Synchronous Serial Engine)可以支持I2C, JTAG and SPI等串行总线. 我理解是openocd调用下面的libftdi等库, 把ft2232当成jtag来用.
ftdi公司也提供windows下的ftjtag.dll, 作用类似, 见"AN_110 – “Programming Guide for High Speed FTCJTAG DLL"
openocd_preliminary_20060102.pdf的Figure 1.2: USBJTAG-1 schematics是ft2232连接jtag的电路图. 这个pdf位于openocd安装目录的doc目录.
相关链接:
openocd网址:
http://openocd.berlios.de/web/
openocd论坛:
http://forum.sparkfun.com/viewforum.php?f=18
openocd介绍:
http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger
The Open On-Chip Debugger (openocd) aims to provide debugging, in-system programming and boundary-scan testing for embedded target devices. The targets are interfaced using JTAG (IEEE 1149.1) compliant hardware, but this may be extended to other connection types in the future.
Openocd currently supports Wiggler (clones), FTDI FT2232 based JTAG interfaces, the Amontec JTAG Accelerator, and the Gateworks GW1602. It allows ARM7 (ARM7TDMI and ARM720t), ARM9 (ARM920t, ARM922t, ARM926ej-s, ARM966e-s), XScale (PXA25x, IXP42x) and Cortex-M3 (Luminary Stellaris LM3 and ST STM32) based cores to be debugged.
Flash writing is supported for external CFI compatible flashes (Intel and AMD/Spansion command set) and several internal flashes (LPC2000, AT91SAM7, STR7x, STR9x, LM3 and STM32x). Preliminary support for using the LPC3180's NAND flash controller is included.
ft2232网址:
http://www.ftdichip.com/Documents/DataSheets.htm
使用openocd连接ft2232时的所需库:
http://www.intra2net.com/en/developer/libftdi/index.php: libFTDI
http://www.ftdichip.com/Drivers/D2XX.htm: D2xx
13:42 2009-3-10
<TODO>最近计划</TODO>
1, 移植Linux2.6.27/Linux2.6.25到板子. 能挂载文件系统即可. 有精力的话加上net.
2, 实验调试工具, 详见"12:56 2009-3-9"函数调用关系工具
1), kft
2), ftrace
3), kgdb
4), openocd调试arm s3c2440开发板.
3, 函数调用关系图, 见"12:56 2009-3-9"-1
16:28 2009-3-16
模拟IC, successive-approximation register (SAR), 逐次逼近ADC.
9:50 2009-3-17
1, 制造业, <TODO>博客</TODO>
转贴---中国与日本德国最可怕的差距 !
自: http://bbs.ifeng.com/viewthread.php?tid=3565394
2, 购买: 嵌入式系统Linux内核开发实战指南(ARM平台)
10:07 2009-3-26
月坛派出所, 户籍: 68021066-111
11:25 2009-3-27
数字电视, cmmb, siano
SIANO的SMS1000是用于移动数字电视应用的高集成CMOS接收器芯片套片。它具有多种频带和标准,耗电量低且尺寸小,可安装在手机、PDA、便携式视频与媒体播放器等多种手持设备上,以实现电视信号接收。SMS1000采用注重系统的集成设计手段,以更低的系统成本整合了移动数字电视功能与移动和手持系统,同时也缩短了产品市场推广的时间。
SMS1000 输入是天线广播的RF信号,输出是在经过解调、在选择好的频道上传输的数据流,格式为MPEG传输包或IPDatagram数据包(取决于标准)格式。这些数据将被传回具有媒介解码和画面显示处理功能的主处理器。
核心性能:
接收器包括RF调谐器(SMS1001)和解调器(SMS1002)
全CMOS解决方案(ZIF转换)
多频带RF调谐器
多种标准:DVB-H、DVB-T、T-DMB以及增强型数据包模式DAB-IP
多种可设置界面
极低的能耗(使用DVB-H标准时平均不超过25毫瓦)
极少的外部零件(只有很少的几个电阻器和电容器)
出众的移动运算法则实现接收器的高速移动性
支持个人数字录像(PVR)应用――在录制节目同时显示其它节目
在芯片上进行PID滤波
常见主处理器及操作系统设备驱动
薄型设计,厚度-0.65mm
关于Siano
Siano公司成立于2004年6月,主要针对移动数字电视(MDTV)市场开发高集成芯片接收器。公司与产业合作伙伴合作进行模块、中间件以及软件应用的开发,通过与多媒体和应用处理器生产商的合作为市场提供完整的移动数字电视解决方案。Siano解决方案支持多频带与多标准,能为手持设备和移动设备生产商赢得更为广泛的客户群体,迅速实现创收。思亚诺总部位于以色列,在韩国、中国大陆及台湾设有分公司,为这些区域的合作伙伴和客户提供销售和客户支持。
欲进一步了解Siano,请访问http://www.siano-ms.com/。
Siano develops silicon receivers for the emerging mobile digital TV (MDTV) market. Highly integrated, and tailored specifically for mobile communications and entertainment devices, the company's multi-band, multi-standard solution supports DVB-H, DVB-T, T-DMB, CMMB, Enhanced Packet Mode DAB as well as ISDB-T.
Siano's multi-disciplinary team brings cutting edge technical competencies to provide the most integrated battery saver multi-standard mobile digital TV receiver optimized for hand-held devices. Siano is enabling TV EVERYWHERE.