-
Notifications
You must be signed in to change notification settings - Fork 2
/
log200911vimicro.txt
2090 lines (1807 loc) · 108 KB
/
log200911vimicro.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
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0:26 2009-11-2
VC1600, VC0882, VC0718, arm, cortex-a8, 65nm工艺
"36: Linux\doc\arm soc\arm体系结构\Cortex\ARM Cortex-A8.txt"有a8在65nm LP, GP工艺的频率, 面积, 功耗:
Speed Opt Speed Opt
Process 65nm (LP) 65nm (GP)
Frequency* (MHz) 650+ 1100+
Area with cache (mm2) <4 <4
Area without cache (mm2) <3 <3
Power with cache (mW/MHz)<0.59 <0.45
The 65nm (LP) dynamic power measured is at 1.2 V nominal and hence is higher than the 65nm(GP) dynamic power which is at 1.0V.
上面功耗的差异是由于LP的功耗在1.2v测试, GP功耗在1.0v测试. 如果GP在1.2v测试, 直接用P=UxU/R估算, GP(@1.2v)=0.648功耗比LP大9.8%.
从tsmc下面资料看, 这里的LP表示low power, GP表示general purpose.
65nm Technology
自: http://www.tsmc.com/chinese/b_technology/b01_platform/b010101_65nm.htm
The 65nm process offers cost-effective benefits superior to the 90nm node. It features two times the 90nm gate density and boasts a speed improvement of between 30 to 50 percent. The 65nm process also provides the smallest SRAM cell and reduces power with a multiple Vt architecture and other process innovation.
TSMC's 65nm logic family includes general purpose (GP), low power (LP) and LPG options. Each process supports low, standard and high Vt options. Operating voltages range from 0.9V to 1.26V. I/O voltages include 1.8V, 2.5V and 3.3V (5V tolerant). Raw gate density is around 854 Kgate/mm2, based on TSMC's standard cell library. SRAM cells range from 0.499μm2 (6T) to 1.158μm2 (8T/10T).
The 65nm process provides a combination of general purpose (G) and low power (LP) core transistors together with a 2.5V I/O transistor as a Triple Gate Oxide (LPG) process for optimizing speed, power, and leakage for wireless/consumer applications.
(9:49 2009-11-13)bamvor: 特征线宽是MOS栅宽, 载流子流动方向是长. 下图中上下是宽, 左右是长.
___
___|_|__
|D S|
---------
| |
---
12:33 2009-11-2
时间管理
0, 9:45-21:34
1, 计划
1), 下午memory会议;
2), sdio mas review. 本来应该明天下午16:30之前回复, 时间紧, 只能是明天晚上做.
3), 晚上sd ppt;
4), 明天下午arm调试, 明天上午之前都看arm11的东西. 尤其是huangweid的"arm1176.doc"
2, 执行
1), 9:50-11:30 面试.
2), 午饭. 12:34,午休, 13:45.
3), 13:45-16:39 linchuan memory总结.
4), -17:37 家里有事.
5), 17:38-18:06 sdio mas review: 中断是否清楚. 看到第五章.
6), 午饭;
7), 19:03-19:42 邮件.
8), 20:44-21:34 830 sd代码整理
12:38 2009-11-2
VC1600, VC0882, VC0882 area estimation 0.3, 疑问
为什么chip cost=costx良率(good rate)?, 我感觉是除.
Memory block SubTotal为什么没有计算cif部分?
13:50 2009-11-2
VC0830, SV, clkrst, clkswitch和memory问题总结
1, "13:28 2009-6-3": 问题1就是2的"VC0830 切频bug", 问题2(memory配置不正确时0x0和0x40000000数据不同)原因未知, 给linchuan看过. 难道是marb问题?
2, "11:16 2009-8-3"VC0830 切频bug(sdrc_mode无shadow寄存器, 未发MRS和EMRS), 这个问题linchuan已总结.
3, "16:04 2009-10-29"切频时即使代码不再sdrc中也需要lock sdrc.
19:20 2009-11-2
VC1600, VC0882, VC0718, arm1176, 札记
1, precise, imprecise data abort
后者是在module端(附近?)才发生的data abort, 这时相应指令已经执行完了.
2, jtag1149.1-2001
3, monitor mode允许在arm运行时通过Debug TAP与arm通信, 可以用于运行实时任务的arm(此时arm没法停止).
9:50 2009-11-3
时间管理
0, 上下班时间: 9:34-
1, 计划:
1), arm debug
2), 830 sd代码整理
3), 晚上要完成sdio mas review, 今晚必须完成.
2, 执行:
1), 9:50-11:27 与zhicheng讨论arm debug
2), 午饭, GPS, 午休
3), 14:00--16:30 arm debug training
4), -18:36 arm debug
5), 晚饭.
6), 19:30-21:53
10:32 2009-11-3
VC1600, VC0882, VC0718, arm, 调试模式, stopped clock
1, stopped clock模式是停止arm clk, 不停止bus和module clock. 因为我们调试时可以通过写入硬件寄存器控制硬件, 例如写入uart tx, uart会输出相应字符.
16:39 2009-11-3
VC1600, VC0882, VC0718, arm debug training
1, 整理todo
1), 整理下午笔记.
2), 实验rvds3.0, 4.0能否正常调试.
3), 晚上要完成sdio mas review
17:06 2009-11-3
VC1600, VC0882, VC0718, arm debug, RVDS
1, 按照Realview ICE driver
1), rvds3.0的rvi-me(Micro Edition) driver似乎是只支持arm926的, 现在这个realview ICE不能用.
2), 用rvds4.0的driver. 可以找到arm1176.
2, rvds3.0中需要手工加入configuration, 选择RVI接口.
有问题, 暂时用rvds4.0实验.
3, 需要把license.dat中
SERVER后面的"000802d74b82"复制到网卡.
提示"flexlm winsock connection refused"
怀疑是license有问题.
4, 重新申请一个license, 对应实际网卡的物理地址的.
关闭虚拟网卡. 重启后即可.
5, 连接后, 可以调试realview RVDS example里面的svc.
可以用arm work bench编译self test, 但是运行到main函数中有问题.
9:53 2009-11-4
时间管理
0, 9:35-21:20
1, 计划
1), sdio mas review;
2), 昨天arm debug training记录. lingming问: L1+L2还是max(L1,L2).
3), 整理arm debug todo. <DONE>
4), <TODO>明天最急的事情是clkrst review, 切频, lock sdrc;</TODO>
2, 执行
1), 9:53-11:24 arm debug/openocd jtag, 见"10:50 2009-11-4"
2), 14:00-18:09 cache, VC0598 training.
3), 晚饭
40, 19:11-21:20
10:50 2009-11-4
(21:20 2009-11-4)
VC1600, VC0882, VC0718, jtag, arm(arm1176) debug, openocd, 项目进展: arm debug(RVI, jlink, openocd), 项目总结
1, 11月3日进展:
arm1176已经可以在rvds4.0下调试简单程序(通过semihost打印), selftest工程运行到main后会失败.
遇到的问题是license问题. 到网上重新申请了评估版license(与物理网卡绑定), 关闭虚拟网卡, 在用license wizard4.2配置license, 重启后rvds4.0可以正常连接RVI.
2, 11月4日进展:
晚上LiaoZhiCheng, Zhangjian一起实验rvds3.0+jlink+pb1176, openocd+jlink+pb1176两种方式, 都是可以读到id, 但是连接rvds或gdb有问题. (后来用新买的jlinkv8+openocd无问题, 看来和网上说的一样(v7对arm11支持不好)).
3, 下一步实验计划包括: rvds4.0编译运行(简单应用程序selftest), rvds3.0(jlink), eclipse(openocd+jlink, openocd+ftdi2232, openocd+并口)), 实验PB1176 运行Linux.
4, 上面提到的openocd对arm11支持很好, 对a8支持无mmu, 无cache情况, 正逐步完善中. 下面是openocd的简单介绍:
openocd是开源的调试代理, 可以通过gdb调试接口在eclipse中调试.
openocd支持jlink, 并口, ft2232的jtag(国内130元). 其中ft2232是一个usb转jtag/rs232芯片, 相当于把并口jtag换成了usb口jtag, openocd通过ft2232可以支持arm11和cortex-a8(不完善).
1), open ocd对arm11支持完整. 已经有s3c6410 cfg.
2), 对cortex-a8有部分支持.
"http://elinux.org/BeagleBoardJTAG"是BeagleBoard使用的调试工具, 可以认为是支持a8的调试器.
"http://elinux.org/BeagleBoardOpenOCD"描述了openocd通过ft2232芯片对a8的支持情况, 目前可以支持无MMU, 无cache的应用程序调试(例如u-boot).
Linux调试有问题: https://lists.berlios.de/pipermail/openocd-development/2009-August/010184.html
"http://tincantools.com/product.php?productid=16144"是国外的ft2232 jtag调试小板, 几十$.
13:06 2009-11-4
VC1600, VC0882, VC0718, arm 开发板
1, 确认天漠的usb otg是如何选择的.
2, 瑞泰:
1), HDMI还是DVI-D?. HDMI和DVI-D pin兼容只是封装不同. 有无HDMI转DVI转接线.
2), 从图片上看usb otg用的是otg口, otg口转miniA, miniB的转接线线有没有?
USB OTG监测: 当OTG设备检测到接地的ID引脚时,表示默认的是A设备(主机),而检测到ID引脚浮空的设备则认为是B设备(外设)。自"http://baike.c114.net/view.asp?USB%20OTG"
3), 800x480屏.
4), 确认随机附件.
17:47 2009-11-4
VC1600, VC0882, VC0718, storage, sdio, LLI问题讨论, pxamci.c
参考Linux2.6.27 driver/mmc/host/pxamci.c(MMC Controller Interface, PXA mmc/sd 模块)
1, host->sg_cpu = dma_alloc_coherent(&pdev->dev, PAGE_SIZE, &host->sg_dma, GFP_KERNEL); 分配连续地址给LLI链表用的.
dma_alloc_coherent会返回虚拟地址给sg_cpu, 物理地址给sg_dma
2, pxamci_setup_data: 会把memory不连续区域的首地址和长度给"host->sg_cpu"
dma_map_sg函数感觉是把不连续memory区域的每个首地址给sg, 但没看到长度.
链表生成后, 把LLI表物理首地址写入寄存器并开启dma:
DDADR(host->dma) = host->sg_dma;
DCSR(host->dma) = DCSR_RUN;
3, 问题:
从PXA寄存器看, 是这样用的LLI. 但是我没有完全看懂, 希望确认Linux是如何得到不连续memory的地址和长度的.
12:50 2009-11-5
时间管理
0, 12:35-
(上午体检)
1, 计划
1), aiguo邮件, 瑞泰minilcde板子 <DOME> 还需要找aiguo确认.
2), clkrst review, 切频, lock sdrc. <DONE>
3), arm debug必须整理, 要不该忘了.
4), 之前的rvdebug调试暂停. 发个进展情况. <DONE>
future), 体检报告会寄到公司, 关注结果.<转移>
2, 执行;
1), 12:50-13:02 arm debug进展, 见"10:50 2009-11-4"
2), 13:15-13:54 VC0718 clkrst mas review.
3), 13:54-14:15 DuanLiHua电话讨论VC0882 sdio mas 0.3. LLI还是确定4个, 不支持PXA那种方式. 原因是目前VC0882中Module只能通过DMA访问AXI上的memory, 不能直接访问memory. 另外VC0882的sdio不支持mmc的stream模式.
4), 14:51-16:03 VC0718 clkrst mas review 续. 重要疑问见"15:53 2009-11-5"
午休20'
5), -18:43 arm开发板.
15:53 2009-11-5
VC1600, VC0718, clkrst, mas review, 疑问:
对"VCO Frequency (Fvco) 240MHz ~ 1200MHz"的疑问:
这个频率范围是否是PLL和PLL divider都支持的? 830中PLL本身能在480-900MHz工作(根据据mas和databook), 但divider只支持480-672Mhz, 这对芯片验证和使用都造成一定的不便
16:16 2009-11-5
(11:28 2009-11-8)
VC1600, VC0882, VC0718, arm debug, arm1176, arm cortex-a8, arm公司Felix Liu, arm debug training笔记, 疑问
Felix Liu [Felix.Liu@arm.com]
评估板CD: "\\10.0.2.36\sqmshare\Document\ARM\VersatileFamilyCD_v3.7", 下文描述的目录都按默认安装目录描述. arm体系结构文档位于"36: \\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\arm体系结构".
1, arm debug
1), 可以利用TRACE把系统运行过程输出. ARM SOC支持TRACE功能需要三个条件, arm core支持ETM, arm soc把ETM引到了padc, PCB连出ETM接口.
2), CoreSight机制:
1), armv7引入的CoreSight机制可以支持系统运行中的debug, 从arm9e开始引入的monitor mode也可以支持不停止arm进行调试, 但是需要arm上的驻留程序.
CoreSight中的CTI(Cross Trigger Interface)和Cross Trigger Matrix用于多核调试, 例如同时停止arm和dsp.
Zhangjian: 从"DGI0012B_coresight_technology_r1p0_sdg"文档看, CoreSight机制中的DAP允许系统在不停止运行的情况下访问memory或debug寄存器且不需要arm上的驻留程序.
2), CoreSight可以通过JTAG直接把code下载到memory中, 速度提高5-10倍(据Felix Liu, 查找资料验证). 这时CoreSight的DAP直接通过bridge连接到AHB(通过AHB-AP).
Zhangjian: 调试方面可以参考两个文档"DDI0314H_coresight_components_trm.pdf", "DGI0012B_coresight_technology_r1p0_sdg.pdf". 前者介绍了CoreSight的各个组件, 后者介绍了CoreSight如何设计.
2, arm architecture讨论
1), 为什么a8不支持TCM(Tight Coupled Memory)?
原来在arm926, arm1176等支持的TCM在cortex-a8中已经不再支持. 因为a8本身支持两级cache, 而且AXI支持128bit/64bit, 带宽很大. 另外a8频率最高能到GHz, 和sram连接很难保证timing.
2), Felix提到a8有L2 controller, ram在片外. arm11只有L2 interface.
Zhangjian疑问: 从a8 TRM看, 至少L2 data cache ram在片内. 需要进一步确认.
3), Felix提到a8的L2是统一不分指令和数据.
zhangjian疑问: L2机制, 包括如何划分指令/数据区域等都不太理解.
3, realview评估板软硬件环境:
1), realviewEB分底板(时钟40MHz), logic tile(xilinx FPGA)和core tile(arm1176 test chip). realviewEB供电是12v, realview ICE是5v, 二者接口一样, 注意别插错.
realview ICE大约3500$, RVDS大约7500-10000$.
这比trace32, BDI, openocd等方案, 贵了几倍到几十倍.
2), 安装"\\10.0.2.36\sqmshare\Document\ARM\VersatileFamilyCD_v3.7"的光盘后, "C:\Program Files\ARM\Versatile\EB_HBI0140\3.7\1"是realview EB的资料, 其中software\linux是Linux patch和编译好的u-boot, kernel映像; software\projects是测试程序. pcb目录有原理图, BOM等.
3), 如何烧写logic tile的FPGA
使用jtag调试arm程序时需要把S1拨到off. 烧写logic tile的FPGA时把S1拨到ON.
烧写具体过程见"DUI0411C_EB_RevD_UserGuide.pdf"p58
烧写程序, 配置文件和文档位于"C:\Program Files\ARM\Versatile\EB_HBI0140\3.7\1\boardfiles", 烧写工具文档是"progcards_rvi.pdf", logic tile范例有AN128(flash led), AN151(AXI device). 目录"C:\Program Files\ARM\Application_Notes\"
4), Realview ICE(RVI)驱动位于"C:\Program Files\ARM\RVI\Drivers\usb_driver\1.3\39\win_32-pentium", 如果PC机用过的USB设备过多, USB配置文件有问题, 可能无法正常安装驱动, 建议在比较"干净"的机器装.
10:00 2009-11-6
时间管理
0, 9:50-
1, 计划:
1), arm debug总结;
2), Linux sd 代码分析.
3), 回复weiyunlong邮件, 功耗. 参考OMAP3530, 当时irq也提出过. <已取消>
2, 执行
1), 10:00-11:47 openocd-0.3.0
2), 14:30-14:48 openocd-0.3.0 续.
3), 14:48-16:08 与IC联调arm1176jtag, 见"15:26 2009-11-6"
10:55 2009-11-6
VC1600, VC0882, VC0718, arm debug, openocd-0.3.0
1, build
1), ./bootstrap #生成configure
2), ./configure --enable-parport --enable-ft2232_ftd2xx --with-ftd2xx-linux-tardir=../libftd2xx0.4.16
出错:
./.libs/libopenocd.a(ft2232.o): In function `ft2232_quit':
/home/zhangjian/openocd_ft2232/openocd/src/jtag/ft2232.c:2825: undefined reference to `FT_Close'
./.libs/libopenocd.a(ft2232.o): In function `signalyzer_h_ctrl_write':
/home/zhangjian/openocd_ft2232/openocd/src/jtag/ft2232.c:3145: undefined reference to `FT_WriteEE'
/home/zhangjian/openocd_ft2232/openocd/src/jtag/ft2232.c:3145: undefined reference to `FT_WriteEE'
/home/zhangjian/openocd_ft2232/openocd/src/jtag/ft2232.c:3145: undefined reference to `FT_WriteEE'
/home/zhangjian/openocd_ft2232/openocd/src/jtag/ft2232.c:3145: undefined reference to `FT_WriteEE'
2, (18:11 2009-11-6)
1), 安装libusb-0.1.12(./configure && make && make install), 开始用的libusb 1.x, 那个不行, 配置方式变了.
其实从libftdi的configure也能看出: configure中检查是否大于0.1.7.
2), 安装libftdi-0.16
3), openocd:
configure总是提示libftdi无法build或运行. 于是实验configure中的代码. 发现是无法找到libftdi.so.1, 但是这个文件实际是存在的.
checking Build & Link with libftdi...... configure: error: Cannot build & run test program using libftdi
15:26 2009-11-6
VC1600, VC0882, VC0718, arm1176 debug, 与IC联调arm1176jtag
1, RVDS4.0提示检查RVI和target连接.
查realviewEB的原理图与IC的原理图(from ARM)一致.
但IC没有连接nSRST(Open collector system reset (bidirectional))和RTCK(Return TCK).
这两根线IC都没有引出.
2, IC咨询arm:
arm答复RTCK用于不指定CLK频率的情况, 如果CLK频率固定可以不接.
nSRST用于板子复位, 只要能保证板子正常复位, 这根线也可以不接. (13:26 2010-2-24)后来VC0882 cortex-a8是必须连接, 见"13:27 2010-2-24"."13:26 2010-2-24"end
arm说SPIDEN(Input Secure Privileged Invasive Debug Enable)在jtag调试时必须置一.
arm1176 TRM:
SPIDEN=HIGH表示在所有Secure modes中都进行侵入式调试. 还指出如果不使用TrustZone feature, SPIDEN和SPNIDEN两个都需要拉高. 详见p654:
SPIDEN The Secure Privileged Invasive Debug Enable input pin, SPIDEN, that
enables and disables invasive debug in the Secure world:
If this input signal is HIGH, invasive debug is permitted in all
Secure modes. In this case invasive debug is permitted in Secure
User mode, regardless value of SUIDEN bit.
If this input signal is LOW, invasive debug is not permitted in any
Secure privileged mode. Invasive debug is permitted in Secure User
mode according to the SUIDEN bit.
For software systems that do not use any TrustZone security features, the
SPIDEN and SPNIDEN pins must be driven HIGH to enable debug by default.
10:06 2009-11-8
时间管理
0, 9:56-
1, 计划
1), arm debug 总结; 发总结的时候一并说明SPIDEN和SPNIDEN作用. <已取消>
2), Linux编译openocd 并实验调试arm1176.
3), 打印s3c6410/TI OMAP3530资料.<DONE>
4), 周工作总结(含时间管理)
5), 查<转移>
(1), Linux进程优先级, 又忘了...
(2), arm FCSE(快速上下文切换)机制及其在Linux中的应用.
2, 执行.
1), 10:10-10:28 计划
2), 10:28-11:30 arm debug总结.
3), 午饭, 午休. 13:21-14:17
4), 15:30-16:36 arm debug总结 续. 完成.
5), -17:04 邮件.
15:59 2009-11-8
VC1600, VC0882, VC0718, arm cortex-a8学习, L2, \todo 解决疑问
"DDI0344J_cortex_a8_r3p2_trm_zhangjian.pdf":
1, 需要软件保证L2中数据与memory的一致性
The L2 memory system does not support hardware cache coherency, therefore software intervention is required to maintain coherency in the system. TRM
p328
2, "lockdown format C"是什么东西?
support for lockdown format C
3, L2是四个word一个dirty bit, 一般的cache都是一个word一个dirty bit.
The L2 cache incorporates a dirty bit per quadword to reduce AXI traffic.
eliminates unnecessary transfer of clean data on the AXI interface.
9:11 2009-11-9
时间管理
0, 9:00-21:15
1, 计划
1), 598 GE training <DONE>
2), dmac mas review(下午1点截止) <DONE>
3), 周工作总结(只能安排晚上了).<转移>
4), jtag进一步实验. <DONE>
5), VC0718的clkrst, pmu review. <转移>
clkrst: 切频时允许配置lock哪些memory.
2, 执行
1), 9:10-9:45 邮件, TI OMAP3530整理
2), 9:45-11:10 Zhangpu GE. 小笔记本p17. \todo 查如何通过两次ROP实现alpha; 查如何通过ROP实现不规则图形的bitblt.
3), 午饭, 午休;
4), 13:55-14:44 VC0882 DMAC mas review
5), 14:48-18:15 IC实验jtag; 实验新买的jlinkv8. 详见"18:16 2009-11-9"
6), 晚饭.
7), 19:26-19:39 计划.
8), 19:39-19:55 工作总结;
9), 19:55-21:01 和huangwei讨论cortex-a8 debug. 参见"20:11 2009-11-9"
9:39 2009-11-9
VC1600, VC0882, VC0718, arm cortex-a8, competitor, TI OMAP3530, \todo 疑问
1, TI OMAP3530是arm cortex-a8(L1+L2(需要确认L2是否在a8内部)+C64x DSP, 总线是L3, L4(似乎是sonic的, 待查).
也就是说TI的arch是L1, L2, L3, L4四层的. L3支持64bit.
2, 3530的CBB封装支持POP, 上面的引出的引脚下面也有对应的引脚. 从p191的figure1-4看, CBB中上面的只是类似pad的东西不是球.
3, p197的table1-8, 1-9写出了如何查看芯片版本(ES1.0, 2.0, 3.0).
13:59 2009-11-9
VC1600, VC0882, memory, DMAC, mas review, 测试计划
1, Corner case:
1), DMAC是byte对齐的, AXI是64bit, 所以共有8x8=64种src_addr, dst_addr组合, 这些组合都要测到.
2), 不同memory区域之间的dma也要测试, 包括rom<->ram间出错的问题. 测试要考虑marb映射到0x0和未映射两个情况.
18:16 2009-11-9
VC1600, VC0882, VC0718, arm debug, arm1176, jlink, \todo
1, 下午配合IC实验arm11jtag, 仍然提示RVI connection问题, 如果用openocd可以看更清楚.
2, 实验gdb+openocd+jlink可以正常连接, 可以读到寄存器.
3, 实验rvds4.0+RVI还是没有成功运行大程序.
4, \todo
1), 实验新的jlink v8如何连接RVDS3.0: 估计是配置文件问题, 这个问题先看文档和网上资料, 凭感觉实验不太可能有结果.
2), 实验RVDS4.0跑大程序(包括Linux). 目前还没有成功过, 这个很重要. 一方面是RVDS4.0可用性, 另一方面是将来用同样程序测试jtag的可用性.
3), 继续配合实验硬件arm11的jtag, 如果可以, 进一步跑小程序.
这方面希望用openocd(windows), 这样可以更清楚的定位错误.
4), 这周仍然要继续实验编译openocd-0.3.0(parport, ftdi2232, jlink). 这个是长线的, 将来用a8时openocd肯定是要给大家用的.
19:41 2009-11-9
(9:54 2009-11-10)
项目, 工作总结, 周工作总结, 10月工作总结, 11月工作总结, 2009年10月26日-2009年11月1日, 2009年11月2日-2009年11月8日, 本周工作计划2009年11月9日-2009年11月15日
1, 周总结2009年10月26日-2009年11月1日+2009年11月2日-2009年11月8日
1), VC1600, 主要工作是arm debug和了解cortex-a8
(1), debugger: 实验arm11, cortex-a8调试环境.
A, 目前已经可以在RVDS4.0下通过RVI调试arm11的小程序, 可以用arm-gdb通过openocd+jlink(v8)读写arm11寄存器(后者是11月10日进展).
B, IC arm11仍然无法连接到RVDS, 提示RVI connection问题.
(2), mas review: VC0882 sdio(结束), DMAC; VC0718 clkrst 第一轮.
(3), a8 TRM看完了第二章(Programming Model), 其余章节根据需要逐步在看.
a8性能比较. "\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能.pdf"
(4), arm11, arm cortex-a8芯片调查和开发板选型(with LiaoZhiCheng). 2天
选型详细记录已上传到"\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\board\现有arm1176和cortex-a8开发板调查及售价.txt"
2), sd代码整理和Linux移植, 1.5天
1), 阅读sdio simplified spec, 写sd代码整理ppt, 基本思路有了.
2), 了解Linux对mmc/sd/sdio的支持. 分析Linux sdio代码
3), training, 最近两周有三次training, 加上自己整理的时间共17小时:
(1), 11月2日 linchuan 830&816 memory总结, 6小时. 资料见YangZuoXing 2009-10-29 9:59邮件.
(2), 11月3日 arm debug training. arm公司Felix Liu介绍了arm debug和realviewEB开发板. 我总结了笔记: "\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\arm体系结构\arm debug training(2009-11-3).txt". 7小时.
(3), 11月4日 team traning(LiaoZhiCheng Cache introduction, ShuYu Dragon, LiDongLiang 598 Development Environment). 4小时.
5), 2009年11月5日上午半天体检.
6), 其它:
(1), c语言利用函数指针(blx指令)跳转到任意地址, 见"21:04 2009-10-29"
2, 本周工作计划:
1), VC1600:
(1), 实验RVDS4.0+RVI, openocd+jlink/ftdi2232调试大程序.
(2), VC0718 clkrst, pmu.
(3), 如果TI OMAP3530和s3c6410板子回来, 实验软件(winCE, Linux, android等)和调试.
(4), VC1600的环境: 暂无计划.
2), sd代码整理: 本周暂时无计划.
3), Linux移植: 本周计划继续整理Linux timer. 否则时间太长了容易忘.
3, 其它计划:
(1), Linux进程优先级, 又忘了...
(2), arm FCSE(快速上下文切换)机制及其在Linux中的应用.
(3), 体检报告会寄到公司, 关注结果.
20:11 2009-11-9
VC1600, VC0882, VC0718, arm debug, cortex-a8, CoreSight, 与HuangWei讨论
1, TRACE输出可以通过TPIU或ETB, ETB再通过SWD输出. TRM p579, p581.
Trace is output over the ATB trace bus. This is then either exported through the Trace Port Interface Unit (TPIU), or stored in the ETB.
The ETM compresses the trace information and outputs it to the AMBA 3 ATB
interface. The ETM can then either:
Export the trace information through a narrow trace port. An external Trace Port Analyzer (TPA) captures the trace information as Figure 14-1 on page 14-4
shows.
Write the trace information directly to an on-chip Embedded Trace Buffer (ETB). The trace is read out at low speed using the JTAG or Serial Wire interface when the trace capture is complete as Figure 14-1 on page 14-4 shows.
2, 讨论中提到的直接访问memory的方式(AHB-AP), 它包括在DAP中, 不是一个独立的component.
另外"DGI0012B_coresight_technology_r1p0_sdg"2.3有四个CoreSight设计例子.
3, 关于实时调试:
The DAP provides real-time access for the debugger without halting the processor to:
AMBA system memory and peripheral registers
All debug configuration registers.
9:40 2009-11-10
时间管理
0, 9:35-21:20
1, 计划
1), 找小段确认usb线: A转miniA<DONE>
2), 周工作总结.<DONE>
3), VC0718的clkrst<DONE>, pmu review.
clkrst: 切频时允许配置lock哪些memory. <DONE>
4), jtag: rvds4.0运行大程序; eclipse运行大程序.
2, 执行
1), 9:54-11:38 周工作总结
2), 午饭.
3), 12:27-14:40 jlink. 见"12:37 2009-11-10"
4), 30' 找usb miniA转A母.
5), 休息: 20'
6), 了解公司概况: 20'
7), 16:56-17:59 周工作总结, 续. 两周总结用的时间比较多.
8), 18:04-18:40 VC0718 Clkrst mas review.
中间休息15'
9), 晚饭;
10), 20:00-20:47 VC0718 Clkrst mas review, 遗留问题. "18:08 2009-11-10"
11), 20:50-21:16 整理这两天jlink使用方法为"jlinkv8 user guide.doc", 位置: "\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\jtag_debugger"
3, 明日计划:
1), VC0718 pmu mas review;
2), 编译openocd(ftdi2232)实验.
12:37 2009-11-10
VC1600, VC0882, VC0718, arm debug, jlink, 使用文档
注: Word版本"Jlink v8 use guide"初稿(v0.1) release:
已上传到: “\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\jtag_debugger”
见ZhangJian邮件"答复: jlink 使用技巧!!! 务必要看"20091110_2117
0, jlinkv8, 主芯片: AT91sam7s64. ALVC164245x2(245是缓冲器).
1, 安装jlink4.08安装包. 安装后插入jlink, 驱动位于"安装目录\JLinkARM_V408l\USBDriver\x86", 默认安装目录是"C:\Program Files\SEGGER".
2, 测试jlink驱动:
运行「开始」菜单->程序->SEGGER->J-Link ARM V4.08l->J-Link Commander, 连接830/816时会显示:
SEGGER J-Link Commander V4.08l ('?' for help)
Compiled Sep 17 2009 09:42:18
DLL version V4.08l, compiled Sep 17 2009 09:41:55
Firmware: J-Link ARM V8 compiled Aug 18 2009 09:06:07
Hardware: V8.00
S/N : 158000502
Feature(s) : RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 2.886V
Info: TotalIRLen = 4, IRPrint = 0x01
Info: CP15.0.0: 0x41069265: ARM, Architecure 5TEJ
Info: CP15.0.1: 0x1D152152: ICache: 16kB (4*128*32), DCache: 16kB (4*128*32)
Info: Cache type: Separate, Write-back, Format C (WT supported)
Found 1 JTAG device, Total IRLen = 4:
#0 Id: 0x07926F0F, IRLen: 4, IRPrint: 0x0 ARM926EJ-S Core
Found ARM with core Id 0x07926F0F (ARM9)
RTCK reaction time is approx. 126ns
Using adaptive clocking instead of fixed JTAG speed.
J-Link>
可以看到target电压是2.886v, 找到一个jtag device(id是0x07926F0F, 926说明是arm926), 如果不使用RVDS, 可能需要根据扫描出的jtag device信息写配置文件.
3, rvds中添加jlink
1), Connection Control中选择"Add/Remove/Edit device";
2), 弹出的"RDI target List"中选择"ADD DLL"
3), 选择"安装目录\JLinkARM_V408l\JLinkRDI.dll",
4), configure: 选中jlinkRDI.dll后, 右键单击选择"Configure Device info", jlink会自动配置. 配置后确定退出, 此时jlinkRDI.dll下会出现arm79_0选项.
5), 双击"arm79_0"连接.
4, jlink RDI是否支持arm11?
1), jlink RDI提到: "Any core supported by J-Link ARM (ARM7 / ARM9)", 没有写arm11.
RVDS的RDI是否支持arm11呢? 如果不支持, 那么RVDS2.2就没法支持arm11了.
2), 查keil的uvision只支持arm7,9, cortex-Mx, 没写支持arm11.
参考: "http://www.keil.com/arm/mdk.asp"
3), IAR支持(但并不是通过RDI接口支持的):
License Number:
9614-135-075-5679
License key:
1VCZBWA3JR3FFBMNXHIY5CGUAZTQS9K4QF9QHBW3Z6I3R47EOE0OXGTRBNLN1B7XEEL3BTFJLU2W4AXQG53FZMDSZYDBDXS5HLCUXAYH25PXABGNT1O1AKMDYIRTWAZJDBNZLKRKANL0IE22BS44F1KK4CF5F2UMRQQAUWJN3MFODRRB# Feature: EWARM-EV Version: 17_WIN Temporary license (Licno:9614-135-075-5679), valid 30 days after first use, expires 2009-12-11
使用参考: http://www.icdev.com.cn/?474/viewspace-3940.html, "用 IAR C/C++ For ARM 编写嵌入式应用的启动细节"
5, jlink使用问题:
ZhangPu邮件"jlink 使用技巧!!! 务必要看"20091110_1622
hi all,
使用时发现有以下技巧与大家分享!
1,如果rvds连接时等待,处于假死状态,可直接reset板子,使jlink断开,此时rvds恢复操作,然后请断掉rvds的链接重新启动rvds再试!(注意先断掉rvds的连接,防止重启rvds后自动重新连接已经失效的jlink)
2,如果发现经常连不上cpu,请讲jlink的工作速度调低!方法如附件图片,按顺序浏览!(调整后,保存并重新启动rvds使之有效)
zhangjian:
1), jlink RDI conf中可以选择速度, 图片位置: 'H:\work_software\software\DevelopmentTools\jlink\技巧ByZhangPu"
2), 目前是clk降速到2M. 怀疑是830板子布的不好造成的. \todo 实验RealviewEB板子, 看看能否跑到10M, 如果可以, 将来做板子时需要提醒.
6, Zhanjian, rvdebugger1.8对jlinkv8支持不好.
大家注意: rvdebugger1.8可能对jlinkv8支持不好: 用rvdebugger1.8调试S3c44b0x时, 接管正常, 但是下载映像时提示memory有问题.
推荐使用RVDS3.0.
另外AXD可以正常使用: 配置方式和rvdebugger一样: 设置clock为2M, no reset.
14:39 2009-11-10
VC1600, VC0882, VC0718, arm开发板, usb otg线, miniA, miniB, DuanXiaoHui
图片位置: "\\10.0.2.36\sqmshare\Share\Linux\doc\usb"
1, 上次请购的A母转miniA线如下图(附链接), 这根线现在需要购买两根,谢谢.
http://item.taobao.com/auction/item_detail-0db1-f07228173b121d48b5e9278f6242f130.htm?cm_cat=0
2, 附miniB和miniA比较
http://item.taobao.com/auction/item_detail-0db1-da4a1400a2aa333903adc6ee835a7ae9.htm?cm_cat=0
miniA转miniB
3, (13:04 2010-3-16)方口是B口, 扁口是A口. miniA比miniB腰粗.
15:48 2009-11-10
VC0830, SV, 量产, PM5926HD, 4.3"(800X480)高清屏+VC0832+16X16DDR+单贴INTEL FLASH 8G+TF CARD+TV OUT(CH7026B-720P)
http://mp3.yesky.com/180/9260180.shtml
随身劲舞 爱国者MP5月光宝盒PM5926HD全评测
16:26 2009-11-10
公司, 同事资料, CFO David Tang, CEO Zhonghan Deng
1, Tang, David: 在纽约大学商学院毕业后, 在美林银行做equity research analyst.
自: http://www.reuters.com/finance/stocks/officerProfile?symbol=VIMC.O&officerId=1226744
Brief Biography
Mr. David Tang has been appointed as Chief Financial Officer and Vice President of Vimicro International Corporation effective August 1, 2008. Prior to joining Vimicro, Mr. Tang served as the Chief Financial Officer of CNinsure Inc. a NASDAQ listed company operating in China. Prior to CNinsure, Tang has also served as the Chief Financial Officer in two other companies, including: IRICO Group, a Hong Kong and China listed company, and Chinasoft International, a Hong Kong listed company. Prior to those positions, he was an equity research analyst at Merrill Lynch & Co. in New York. Mr. Tang received his MBA degree from Stern School of Business, New York University.
2, Deng, Zhonghan: 中星微董事局主席和CEO, 工业和信息化部顾问, 清华大学电子工程学院访问学者, Sohu.com的董事和审计委员会成员(audit committee member).
http://www.reuters.com/finance/stocks/officerProfile?symbol=VIMC.O&officerId=1010772z
Deng, Zhonghan
Brief Biography
Dr. Zhonghan Deng is a co-founder of Vimicro International Corporation and currently serves as the Chairman of the Board and Chief Executive Officer. Dr. Deng currently serves as an advisor to the Ministry of Information Industry and the Ministry of Science and Technology of China and a visiting professor at the Department of Electrical Engineering at Tsinghua University. He also serves as a board member and audit committee member of Sohu.com Inc. Dr. Deng has received numerous awards for his achievements, including the National Medal for Outstanding Overseas Returnee in 2003, and the National First Class Award for Science and Technology in 2005, both of which were presented by the President of China, Hu Jintao. Prior to joining us in January 2002, Dr. Deng co-founded Pixim, Inc. in Silicon Valley in 1998. Prior to that, Dr. Deng was a senior researcher for IBM at the T.J. Watson Research Center in Yorktown Heights, New York. Dr. Deng received his Ph.D. degree in Electrical Engineering and Computer Science, M.S. degree in Economics and M.S. degree in Physics, all from the University of California at Berkeley.
18:08 2009-11-10
VC1600, VC0718, clkrst, mas review, 下一阶段review check内容
1, 支持PLL1, PLL2, XCLK之间任意切换:
需要check寄存器是否支持.
20:49 2009-11-10
VC1600, VC0718, timer, mas review, 注意
wdt有TMR_W1和TMR_W2两个timeout, 两个timer顺序执行, 都timeout后cpu才会重启.
9:43 2009-11-11
时间管理
0, 9:35-
1, 计划
1), VC0718 pmu mas review; 上午.<DONE>
2), 编译openocd(ftdi2232)实验. 下午. 希望今天试通, 下次与IC联调时可以用openocd, 这样能更准确定位错误.
3), 希望每天有一个小时看arm, 一个小时看Linux code或coding exercise.
4), BGA181开icache, dcache, 映射mmu.<DONE>
2, 执行
1), 杂;
2), 9:48-10:34 VC0718 pmu mas review.
3), 10:35-11:31 VC0830 sdio 代码整理.
4), 午饭, 休息.
5), 13:30- openocd+ftdi2232
(14:50-15:40面试.)
6), 17:00-18:17 VC0830 sdio 代码整理讨论. \todo 整理记录. 先移植到Linux再剥离.
7), 晚饭, 19:09-19:52 休息;
8), 19:53-20:21 mingW
9), 20:21-21:13 openocd+ftdi2232, 续.
10:12 2009-11-11
VC1600, VC0718, mas review, pmu
1, 疑问, 问dongliang
1), 为什么poweroff时软件要执行wfi指令? 保证arm不再执行?
2, VC0718/VC0728中由于没有sleep状态, 所以power domain只有core domain, 没有VC0830的pmu domain. VC0764有sleep状态, 所以有pmu domain和core domain.
3, VC0718没有rtc.
14:38 2009-11-11
VC1600, VC0882, VC0718, arm debug, openocd, ftdi2232, Linux/Windows(mingw)编译使用; 总结, 文档
1, 把/usr/local/lib的ftdi库复制到/usr/lib下, 终于configure成功, 按理说应该改配置文件或环境变量的. 这里偷懒了.
[zhangjian@IC-2 openocd]$ ./configure --enable-parport --enable-ft2232_libftdi --enable-jlink
2, 编译后
1), openocd+jilnk执行一直提示有错, 有了用sudo执行就可以了.
2), openocd+ftdi2232仍然不行. 重启. 后来发现是设备名字也要对应.
3, (20:31 2009-11-11)
1), Linux中插入ftdi2232后在usbfs中可以看到:
cat /proc/bus/usb/devices
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 9 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=1457 ProdID=5118 Rev= 5.00
S: Manufacturer=www.100ask.net
S: Product=USB<=>JTAG&RS232
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
2), 修改interface配置文件:
[dec@localhost tcl]$ cat interface/100askjtag.cfg
#
# 100ask jtag
#
interface ft2232
ft2232_device_desc "USB<=>JTAG&RS232"
ft2232_layout jtagkey
ft2232_vid_pid 0x1457 0x5118
3), ftdi2232连接arm11有问题. 一是扫描的id不对. 现在是6MHz速度, 怀疑是速度太快了. 二是jtag与板子供电, 这样会有问题.
(1), (10:11 2009-11-12)
切断两根电源线. 仍然不行, 似乎又改善. 有时能扫出是0x07f76f1f(应该是0x07b7bf0f).
(2), 降低速度, 降到1Mhz时比较稳定(jtag_rclk):
set _CHIPNAME pb1176
set _ENDIAN little
set _CPUTAPID 0x07b76f0f
jtag_rclk 1000
jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1 -irmask 0x1f -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm11 -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm1176
#jtag_nsrst_delay 500
#jtag_ntrst_delay 500
jtag_nsrst_delay 1000
jtag_ntrst_delay 1000
#reset configuration
reset_config trst_and_srst
但是用openocd telnet看到的寄存器时有些和gdb看到的不一样. 不一定有问题. 也许是正好操作了某些寄存器. 到底ftdi2232能不能用, 还是得看下载映像.
3, (13:25 2009-11-12)windows下编译openocd
1), 下载
libusb
http://sourceforge.net/projects/libusb-win32/
mingW下工具下载, 自: "http://topic.csdn.net/t/20050915/17/4273295.html"
http://sourceforge.net/projects/mingw-install/files/
ftdi2232 windows driver下载:
http://www.ftdichip.com/Drivers/D2XX.htm
4,
1), target\vc0830.cfg
set _CHIPNAME vc0830
set _ENDIAN little
set _CPUTAPID 0x07926f0f
#jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0xE -irmask 0x0f -expected-id $_CPUTAPID
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs
reset_config trst_and_srst
2), openocd -f interface/100askjtag.cfg -f target/vc0830.cfg -c init -c reset
Linux下需要root权限, 否则无法访问设备.
映像位置: "D:\work\VC0882\代码和映像\20091112\openocd0.3.0_win"
10:11 2009-11-12
时间管理
0, 9:41-18:40
1, 计划
1), 问小段板子进展.
2), BGA181开icache, dcache, 映射mmu. 上午完成.
3), openocd考虑windows下编译. 待jtag i/o信息.
4), 可选: VC0830 Linux sdio移植. 计划下周四之前完成.
2,
1), 9:45-10:26 openocd+ftdi2232, 续. 阶段性成功, 可以正确连接并且读到寄存器. 参见"14:38 2009-11-11".
2), 10:27-11:17 IC联调arm11 debug. 见"11:18 2009-11-12"
3), 午饭.
4), 12:06-15:xx windows下编译openocd
(13:53-14:03午休)
5), -16:00+12'(整理发信) 与IC联调arm11 debug.
6), 16:00-17:08 Linux SPI简单分析, 见"16:37 2009-11-12"
7), 17:08-18:18 windows下编译openocd通过, 在vc0830上下载代码并运行成功, 似乎不太稳定. 参见"14:38 2009-11-11"
8), 领了两根miniA转A母线,
3, 明日计划:
1), 下午: 写一个最小的程序. 32k以内.
2), BGA181 cache mmu.
3), clkrst mas review
11:18 2009-11-12
VC1600, VC0882, VC0718, arm1176 debug, 与IC联调arm11
1, 查连通性: 发现TCK不通;
2, 与ucf对应, 发现连线不对.
3, 修正后, IC发现控制arm11的FPGA过热, 电压从5.0v拉到了低于4v, 电流2.75A.
4, 目前IC在查板子, Jlink已留给IC(已说明使用方法).
5, 下午进展:
用逻辑分析仪抓数据, 发现TCK, TMS, TDI都有翻转, 只有TDO无变化.
6, IC本来计划在FPGA内部抓JTAG数据并比较, 后来IC发现是jtag连线错误, 上午联的时候数错了. 调整连线后jlink可以正确读到ID. rvds4.0可以正常扫描到设备并连接(但怀疑是飞线问题造成1M clock访问也不稳定(默认是10M), 目前是20k clock).
7, 尝试memory读写. sram简单读写正常, ddr访问有问题.
AXI上的codec访问ddr是正常的, 说明ddr本身正常. 经IC找ZhouChunLiang分析, 发现arm访问sram和ddr不是一个通路. ddr问题IC会进一步查.
8, 实验sram运行程序: fail.
程序是在arm realviewEB 板子运行正常的程序, 利用了svc和semihost.
讨论发现, IC其实对sram没有完整验证过.
9, 为了便于debug, IC会先改进JTAG连接, 这样我们调试程序会方便很多.
10, (17:48 2009-11-12)
后面发现sram可能是32k的, 所以有问题.
16:37 2009-11-12
Linux移植, bus, SPI, Linux SPI简单分析
1, Linux SPI对上的传输接口主要有: spi_write_then_read()和spi_sync().
1), spi_write_then_read是先读后写的半双工模式通过spi_sync()实现. spi_sync()支持全双工, 半双工. 具体如何区分未看.
2), 块读写使用方法可以参考"driver/mmc/host/mmc_spi.c"
mmc_spi_request()负责处理kernel的requst(命令或数据), 最终这些命令会调用"spi_sync()"
2, spi_sync()最终会调用transfer函数. 初步看transfer函数对是否使用DMA有不同处理:
1), 使用DMA的情况: queue_work(pump_messages) -> tasklet_schedule
似乎是通过rx_dma, tx_dma是否为空表示读或写的.
2), 不使用DMA的情况通过bitbang实现. 具体如何与芯片结合未看.
3, 没有看到利用设备文件直接操作SPI.
9:35 2009-11-13
时间管理
0, 9:32-22:32
1, 计划
\todo 找小段领板子时, 提醒北京瑞泰会送一个miniA转A母的转接板. <DONE>
1), arm cortex-a8 intruction and 笔记. <DONE>有疑问需要进一步确认.
2), BGA181 cache mmu.
3), clkrst mas review. <DONE>
4), 与100ask提供的代码比较稳定性. 实验arm11
5), 下午: 写一个最小的程序. 32k以内.
2, 执行
1), 9:42-10:00 arm arch回顾.
2), 10:00-12:09 arm cortex-a8 introduction by arm corp.
3), 午饭. 12:59-13:33 午休
4), 13:33-14:32 vc0718 clkrst mas review, 0.26时我看了两次, 注意到时的绩效是如何评价的.
5), 14:54-16:40 arm cortex-a8 introduction notes
(中间休息30')
6), 17:20-22:27 arm11开发板.
(含晚饭, 休息 2小时)
14:22 2009-11-13
VC1600, VC0718, VC0830, clkrst, clkswitch, clkrst mas review, 疑问<DONE>
1, divider的计算方法<DONE: 笔误>:
718目前是" (*_cyc_h+1*_cyc_l+1)", 但830/816都是 (*_cyc_h+1*_cyc_l+2). 能否解释一下这样修改的原因. *_cyc_h=*_cyc_l时是否占空比是1:1呢?
2, 现在718中gate bit有些在module_clk_config, 有些在统一的寄存器中(例如apb_clk_gtx). 想了解一下这样分开有什么好处? <DONE>会放在open issue, 需要进一步讨论.
在830中和其它芯片中一般是统一在某几个寄存器中. 这样软件容易实现.
3, DLX和PMX在5.1节中都支持配置到xclk, 这里没有, 另外这里0表示pll2和但前面0表示xclk, 这样软件使用会不方面. DLX和PMX就是不支持在xclk下使用.
14:54 2009-11-13
(13:44 2009-11-16)
VC1600, VC0882, VC0718, arm architecture, \todo
希望能在讲一次a8内部的东西.
1, arm进军smart book, with 高通/博通(待查).
smart book特点:
1), 更强调用户体验.
2), OS: Linux;
3), 互联网.
4), 针对女性, 学生等人群的facebook, youtube等应用.
5), frequency: 1G, 目前65nm, 会逐渐做45nm.
2, cortex-a8
介绍用包括了cortex-a8与arm11的比较.
1), 频率, 性能, 功耗
65nm LP(Low Power)工艺
cortex-a8 arm11
worse case 500Mhz 400Mhz
DMIPS 2.0 1.1 or 1.2 (\todo 找arm官网资料确认)
另: IC找到的资料TCMC能把arm11做到800Mhz(这个显然不是最坏情况), a8是500Mhz.
2), thumb-2 hybrid 16-32bit instruction set. 这样代码密度大, 意味这cache命中率高了.
zhangjian: gcc参数"-mthumb"选择thumb还是thumb-2取决于"-mcpu=name"或"-march=name"的选择. \todo 实验.
3), NEON
(1), NEON 与 cache. (忘了记录结果).
(2), 代码编写方式:
如果arm和neon指令混在一起, 可能会映像arm效率. 建议是arm和neon指令分块写.
(3), How to use NEON
A, Assembler
B, C Instrincs(\todo 查库): c function call interface to NEON. 只需要提供数据, 不用管寄存器.
C, 编译器自动生成. RVDS3.1 professional 或 arm gcc 2007Q3.
zhangjian: B,C效率的差异可以从参考我之前找的a8与x86性能测试(17:30 2009-10-28 http://forum.linuxbj.com/node/9).
D, openmax. \todo 查
4), Jazelle RCT与ThumbEE
(1), ThumbEE可以加速脚本语言的执行, 包括java等(查).
(2), jazelle RCT和一般的java bytecode用不同的虚拟机. sun JRE with JIT, OpenJDK等三家公司都有(查这三家公司, 及性能).
(3), 代码需要重新编译. 代码大小(或者是编译时间?)和性能对比, 数值是我根据柱状图读出的, 有可能有误差:
java bytecode thumbEE arm
编译 100% 110% 260-300%
性能上thumbEE与arm性能相差很少.
(4), java script:
firefox3.5支持. 在相同arm cortex-a8处理器运行, 比firefox3.0快很多倍.
5), adobe flash
通过openMAX IL支持flash 10
1), flash lite 3 flash play 10
cpu arm9 arm11 or cortex-a8
float point VFP VFP
2d ? openGL ES2.0
为什么没有用openVG? arm评估, 用openVG最多能提高20%, 有瓶颈. 所以用的openGL.
zhangjian: openGL可以用与2d加速? 这和我之前的理解有不同.
6), openGL 对arm的支持.
3, Power Managememnt/IEM
IEM需要先看文档再整理. 需要了解大致原理.
4, Debug/CoreSight
CoreSight DKA8
20:58 2009-11-13
VC1600, VC0882, VC0718, arm11, s3c6410, 开发板问题
1, otg接口焊成了miniB口.
回复: 因为目前不支持otg host.
2, 核心板芯片字迹不清, 擦拭. 如果擦不干净可能是旧片.
3, android1.5已经跑起来的. 屏不亮. 怀疑是driver有问题. 查看kernel文件确实没有群创7寸屏的驱动.
回复: 提供的android1.5映像, android0.9和ubuntu不支持7寸屏. Linux2.6.24的s3cfb_at070tn83.c是7寸屏驱动. \todo 移植到ubuntu和android0.9下.
9:30 2009-11-16
时间管理
0, 9:15-21:25
1, 计划
1), arm cortex-a8 intruction and 笔记. <DONE>有疑问需要进一步确认.
2), BGA181 cache mmu.
3), s3c6410板子.
4), 本周总结.
5), VC0882 uart review. 回顾uart移植时的问题: 发送中断. fifo.
6), 找之前memory邮件. pcddr dll关闭时的时序.
7), VC1600 ddrc mas review(查为什么要返回前读memory保证稳定). <DONE>
8), VC1600 uart中断: 发送, 接收. fifo 半满, 半空.
future1), 与100ask提供的代码比较稳定性. 实验arm11
future2), VC1600 clkrst mas review. 见"20:52 2009-11-16"
2, 执行
1), -9:55 杂, 邮件. DMAC mas review忘了回复(上周六截止).
2), 10:04-11:27 BGA181 cache mmu 代码完成, 调试中.
3), 午饭, 休息.
4), 13:23-13:50 arm
5), 14:42-16:25 BGA181 cache mmu 调试. BGA282 pass, 晚上BGA181测试.
6), -17:42 VC0882 ddrc, uart mas 讨论(和dashan, zhicheng).
7), 40'. VC1600 ddrc mas review 讨论 见"19:14 2009-11-16"
8), 40'. s3c6410开发板.
9), 晚饭.
10) -21:24(30') s3c6410开发板: LCD驱动正确, 但是没有引导起文件系统. ubi出错.
15:50 2009-11-16
VC1600, VC0718, module, mas review分工
Aiguo邮件"答复: 718 MAS location"20091116_1546
adc VC0718\PADC zhangjian
clkrst VC0718\CLK_RST zhangjian
pmu VC0718\PMU zhangjian
sdio VC0882\SDIO zhangjian
dmac VC0718\DMAC zhangjian
19:14 2009-11-16
VC1600, VC0882, VC0718, ddrc mas review, 同事信息, JinWenJie(ddrc), cuiyunfei(ddrc)
1, 向IC说明830遗留问题: sdrc_mode(mrs, emrs)无shadow寄存器, 切频时未发mrs, emrs命令. \todo 这个需要详细了解.
2, 为什么要返回前读memory保证稳定:
查研发记录簿p114, 当时可能是因为dll开/关需要一个稳定时间, 有一个时间linchuan不确定, 所以通过读memory判断是否稳定. 联系JinWenJie, cuiyunfei.
ddr2 datasheet: enable: reset, 200cycle.
VC1600(synopsys) ddr phy: 支持lp ddr1(mobile ddr1)和ddr2
讨论后发现这个问题需要实验, 没那么简单. JinWenJie会提出这个问题, 看老大们如何处理.
20:52 2009-11-16
VC1600, VC0882, VC0718, clkrst mas review, 遗留问题
1, clkrst中配置cpu divier和cpu/bus ratio. 不再配置bus divider.
2, cpu_clk_config和mx_clk_config中都可以选择clock source. 难道cpu和bus的clock source可以不同?
9:28 2009-11-17
时间管理
0, 9:11-18:44
1, 计划
1), BGA181 cache mmu. 看中午板子有没有空, 不行就明天.
2), s3c6410板子. 上午. <DONE>
3), 本周总结. 中午. <DONE>
4), 问小段omap3530板子.<DONE>
5), VC0882 uart review. 回顾uart移植时的问题: 发送中断. fifo. uart中断: 发送, 接收. fifo 半满, 半空.
6), 找之前memory邮件, 是发给linchuan等人的, 似乎是个大牛. pcddr dll关闭时的时序.<DONE>
future1), 与100ask提供的代码比较稳定性. 实验arm11
future2), arm cortex-a8 introduction 笔记疑问整理.
future3), VC1600 clkrst mas review. 见"20:52 2009-11-16"
2, 执行
1), 20' Arm debug, DGI0012B_coresight_technology_r1p0_sdg, chapter2"CoreSight Components and Systems"
2), -9:46 杂, 邮件. 计划.
3), 9:50-11:00 s3c6410板子.
4), 11:00-11:39 与ZHANG Shiqun讨论VC0718 clkrst mas review.
5), 午饭.
6), 30' s3c6410板子, 续.
7), 13:59-14:50 面试.
8), 14:50-15:47 ZhouDaShan sdram introduction.
9), 16:01-17:27 上周工作总结.
10), 18:19-18:44 s3c6410板子, 续.
11), 20' Arm debug, DGI0012B_coresight_technology_r1p0_sdg, chapter2"CoreSight Components and Systems". DONE
3, 明日计划:
1), VC0882 DMAC mas review.
10:06 2009-11-17
VC1600, VC0882, VC0718, arm board, s3c6410, android1.5
1, 对比android1.5_4和android1.5_7启动代码, 发现两者"VID header offset"不同.
Creating 4 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x000000080000-0x000000100000 : "bootloader"
0x000000100000-0x000000600000 : "recovery"
0x000000600000-0x000000900000 : "kernel"
0x000000900000-0x000010000000 : "rootfs"
UBI: attaching mtd3 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
s3c-nand: ECC uncorrectable error detected
UBI: attached mtd3 to ubi0
UBI: MTD device name: "rootfs"
UBI: MTD device size: 247 MiB
UBI: number of good PEBs: 1976
UBI: number of bad PEBs: 0
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 1
UBI: available PEBs: 327
UBI: total number of reserved PEBs: 1649
UBI: number of PEBs reserved for bad PEB handling: 19
UBI: max/mean erase counter: 2/1
...
UBIFS: mounted UBI device 0, volume 0, name "rootfs"
UBIFS: file system size: 208373760 bytes (203490 KiB, 198 MiB, 1615 LEBs)
UBIFS: journal size: 10450944 bytes (10206 KiB, 9 MiB, 81 LEBs)
UBIFS: media format: 4 (latest is 4)
UBIFS: default compressor: lzo
UBIFS: reserved for root: 5182151 bytes (5060 KiB)
VFS: Mounted root (ubifs filesystem) on device 253:1.
对比昨天出错信息:
UBI: attaching mtd3 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 126976 bytes
UBI: smallest flash I/O unit: 2048
UBI: VID header offset: 2048 (aligned 2048)
UBI: data offset: 4096
s3c-nand: 1 bit error detected at byte 514, correcting from 0x49 to 0x4d...OK
UBI error: validate_ec_hdr: bad VID header offset 512, expected 2048
UBI error: validate_ec_hdr: bad EC header
UBI error: ubi_io_read_ec_hdr: validation failed for PEB 0
UBI error: ubi_init: cannot attach mtd3
UBI error: ubi_init: UBI error: cannot initialize UBI, error -22
发现主要是VID header offset设置不同造成的.
16:07 2009-11-17
项目, 工作总结, 周工作总结, 11月工作总结, 上周工作总结2009年11月9日-2009年11月15日, 下周工作计划2009年11月16日-2009年11月22日, arm debug总结(DBGEN, SPIDEN, SPNIDEN).
1, 周总结2009年11月9日-2009年11月15日
1), VC1600:
(1), mas review: VC0882 dmac(两次), VC0718 clkrst(两次), pmu.
(2), arm arch, debug: 回顾自己之前arm arch学习笔记, 与IC huangwei讨论arch debug.
(3), jtag:
A, 自己编译了windows下的openocd, 可以正确连接830并load映像. openocd支持无MMU无cache的cortex-a8, 将来调试会用到.
B, 公司arm11 jtag本周最终调通: 问题一是SPIDEN未置高, 一个是板级连接问题.
详细情况: IC内部是DBGEN=1, SPIDEN=1, SPNIDEN=0. SPNIDEN这个信号按ARM11 TRM是说不用TrustZone时必须SPIDEN和SPNIDEN都高, 但是ZhouChunLiang问arm公司得到的答复是SPIDEN必须高, SPNIDEN随意. 板级连接需要把TCK下拉, 输入信号上拉(TDI, TMS).
C, jlinkv8: 可以正确读出arm11寄存器. jlink使用文档"jlinkv8 user guide.doc", 位置: "\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\jtag_debugger"
2), sd代码整理和Linux移植
1), 讨论了830 sd代码整理思路, 整理分两步: 一, 830Linux支持sd卡; 二, 移植Linux协议栈到VC0830工程中.
3), training(两次)
1), 598 GE training(11-9);
2), arm training(11-13), 笔记整理未完. 目前笔记: "\\10.0.2.36\sqmshare\Share\Linux\doc\arm soc\arm体系结构\Cortex\arm arch (cortex-a8) introduction 笔记.txt"
2, 计划
1), VC1600 mas review. review dma等模块. 同时参与uart和ddrc mas review(主要是确认是否解决之前830和Linux移植中遇到的问题).
2), 实验s3c6410(arm11)和TI OMAP3530(cortex-a8)板子, 包括jtag, Linux/android, WinCE6.0等.
3), 继续整理上周arm training笔记: 这里面包括继续阅读CoreSight Component文档)
4), 830 sdio代码整理和Linux移植笔记暂缓.
3, 其它计划:
1), 查如何通过两次ROP实现alpha; 查如何通过ROP实现不规则图形的bitblt.
2), jlinkv8和ftdi2232实验s3c6410.