Search This Blog

Apr 26, 2011

Wireless USB transceiver stuff


Get input devices.

Where get my wireless USB mouse device information?
$ cat /proc/bus/input/devices
I: Bus=0003 Vendor=045e Product=0745 Version=0111
N: Name="Microsoft Microsoft® Nano Transceiver v2.0"
P: Phys=usb-fsl-ehci.1-1.3/input0
S: Sysfs=/devices/platform/fsl-ehci.1/usb2/2-1/2-1.3/2-1.3:1.0/input/input3
U: Uniq=
H: Handlers=kbd event3 
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=045e Product=0745 Version=0111
N: Name="Microsoft Microsoft® Nano Transceiver v2.0"
P: Phys=usb-fsl-ehci.1-1.3/input1
S: Sysfs=/devices/platform/fsl-ehci.1/usb2/2-1/2-1.3/2-1.3:1.1/input/input4
U: Uniq=
H: Handlers=kbd mouse1 event4 
B: EV=1f
B: KEY=837fff 2c3027 bf004444 0 0 1f0001 f84 8b27c000 667bfa d9415fed 8e0000 0 0 0
B: REL=3c3
B: ABS=1 0
B: MSC=10

I: Bus=0003 Vendor=045e Product=0745 Version=0111
N: Name="Microsoft Microsoft® Nano Transceiver v2.0"
P: Phys=usb-fsl-ehci.1-1.3/input2
S: Sysfs=/devices/platform/fsl-ehci.1/usb2/2-1/2-1.3/2-1.3:1.2/input/input5
U: Uniq=
H: Handlers=kbd js0 event5 
B: EV=10001f
B: KEY=837fff 2c3027 bf004444 0 c000000 1 10f84 8b27c007 ffff7bfa d941dfff febeffdf ffefffff ffffffff fffffffe
B: REL=40
B: ABS=ffffff01 701ff
B: MSC=10
From above messages, we can know this wireless USB transceiver contains 3 devices, there are keyboard,mouse, joystick. Also we know where they register.

Enable HID debug message output

If you want to see debug message when debugging HID device, please do following action.
$ echo 1 > /sys/module/hid/parameter
$ dmesg

Test mouse or keyboard under command line console.

$ cd /dev/input/
$ ls 
by-id    event0   event2   event4   js0      mouse0   uinput
by-path  event1   event3   event5   mice     mouse1
$ cat event4
# move your mouse or click on the buttons. We can see uart console output some character, that means mouse works.
S�v     S�v    S
S ����S  ����SS�' ����S�'  ����S�'S�F ����S�F  ����S�FS&f ����S)f  ����S1fSO� ����SS� 

Add other wireless USB transceiver support

We have a wireless transceiver, vendor is Sunplus, but i.MX53 has no response when plug in. The reason is that we didn't include its driver into kernel. Make one modification in imx5_defconfig, build uImage and done.
CONFIG_HID_SUNPLUS=y

Apr 15, 2011

Mfgtools mkfs.vfat format fat parittion smaller than 1GB

vfat partition file system reports size is 0.99GB

We met problem when using Mfgtools to update android image to 4GB SD card on MX53 SMD board.I got Mfgtools-Rel-11.03.00_ER_MX53_UPDATER.tar.gz, extract it and select "MX53SMD-Android-SD" config to burn Android image to SD card. Mfgtools use "Profiles\MX53 Linux Update\OS Firmware\ucl.xml" to control burning operation. It will fdisk 5 partitions on SD card. First partition is vfat, and others are EXT4. We can look at part of the code:
"push" body="$ mkfs.vfat /dev/mmcblk0p1">Formatting sd partition
  "push" body="$ mkfs.ext4 /dev/mmcblk0p2">Formatting system partition
  "push" body="$ mkfs.ext4 -O^extent /dev/mmcblk0p4">Formatting recovery partition
  "push" body="$ mkfs.ext4 /dev/mmcblk0p5">Formatting data partition
  "push" body="$ mkfs.ext4 -O^extent /dev/mmcblk0p6">Formatting cache partition
My SD card is 4GB, in this case, vfat partition assigned 3.3GB. But after burn image complete, I found fat partition file system only 0.99GB. I checked update log message, found vfat partition information is correct, 3.3GB size. and format that partition with tool "mkfs.vfat", the problem should comes from this tool. Normally, it should be such as word length issue,32 bits variable has limitation to access GB space size. And from the log, it shows that "mkfs.vfat" version is 2.11, date is 2005. It is six years old.

Found patch via google.

find a bug report in debian, it is known issue that mkfs.vfat 2.11 has bug that will limit fat format size smaller than 1GB. Got the patch, it is very simple, Just add specific CFLAGS in debian/rules.
ifeq ($(ARCH),alpha)
-OPTFLAGS="-fomit-frame-pointer -fno-strict-aliasing"
+OPTFLAGS="-fomit-frame-pointer -fno-strict-aliasing $(shell getconf LFS_CFLAGS)"
else
-OPTFLAGS="-O2 -fomit-frame-pointer"
+OPTFLAGS="-O2 -fomit-frame-pointer $(shell getconf LFS_CFLAGS)"
endif
What is LFS_CFLAGS?
$ getconf LFS_CFLAGS
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
OK, that is key point, it tells mkfs.vfat to support LARGEFILE_SOURCE and FILE_OFFSET_BITS is 64, that make sense.
Get LTIB1101, extract dosfstools package
$./ltib -m prep -p dosfstools
It extract source code in directory rpm/BUILD/dosfstools-2.11/, check debian/rules, but it already contains that patch. Oh, now we suppose that Mfstools default mkfs.vfat has problem, I need generate new mkfs.vfat to replace it.

Generate new Mfgtools ram rootfs.

Mfgtool use initramfs.cpio.gz.uboot as it rootfs when burning image.
execute ./ltib --selectype, select Mfgtools profile, and also select dosfstools and util-linux in package list, mkfs.vfat in dosfstools, sfdisk in util-linux. After building done, copy initramfs.cpio.gz.uboot to Mfgtools directory "Profiles\MX53 Linux Update\OS Firmware". Run Mfgtools to burn image into SD card, but unfortunately, vfat partitin file system report 0.99GB! Why?

Get latest dosfstools_3.0.11.orig.tar.gz

Just suppose this fix doesn't work at all, get latest dosfstools from http://ftp.debian.org/debian/pool/main/d/dosfstools/dosfstools_3.0.11.orig.tar.gz. Put it in /opt/freescale/pkgs/. Modify "ltib/dist/lfs-5.1/dosfstools/dosfstools.spec" to support this new package. Regenerate initramfs.cpio.gz.uboot, testing. Oh, the vfat partition size changed, it change to 2GB size! Oh, that is not my desire... 2GB size normally is FAT16 limitation, but it shows that is FAT32.Must something wrong. I doubt SD card driver has problem to access 2GB size, something like SDHC issue. I want to use "mkfs.ext4 /dev/mmcblk0p1" it shows 3.3GB. SD card driver has no problem, problem comes from mkfs.vfat.

Debug dosfstools_3.0.11 mkdosfs.

I choose ltib environment for debuging, use mx53 SMD board with NFS. Extract dosfstool package.
$./ltib -m prep -p dosfstools
$ cd rpm/BUILD/dosfstools_3.0.11
$ make -j2
We got mkfsdos, it link to mkfs.vfat. Copy it to /tftpboot/sbin. In mx53 smd console, excute "mkfs.vfat", but it report error and cannot run. And then I want to try use ltib to build.
$./ltib -m scbuild -p dosfstools
Copy mkdosfs to /tftpboot/sbin, it can run, but vfat partition size still not correct. What is the difference between LTIB scbuild and directly make under dosfstools directory? Compare the build process message, found when use ltib scbuild it will pass CFLAGS in it, that is to say, CFLAG in mkdosfs Makefile will has no use. Here is the command line when execute ltib scbuild.
arm-none-linux-gnueabi-gcc -c -Dllseek=lseek64 -D_LARGEFILE64_SOURCE mkdosfs
I think that is the root cause, the CFLAG definition for ltib scbuild in "dist/lfs-5.1/dosfstools.spec", modified it:
%Build
-make CC="${TOOLCHAIN_PREFIX}gcc" CFLAGS="-Dllseek=lseek64 -D_LARGEFILE64_SOURCE"
+make CC="${TOOLCHAIN_PREFIX}gcc" 
Build mkdosfs, copy it to /tftpboot/sbin, in mx53 SMD console
$ mkfs.vfat /dev/mmcblk0p1
$ mount -t vfat /dev/mmcblk0p1 /mnt
$ df
It shows 3.3GB.
We locate the root cause!

LTIB default dosfstools 2.11 also works

Turn back to LTIB default dosfstools 2.11, with same modification, mkfs.vfat make format the whole partition to correct size 3.3GB. Now, we known, the CFLAG in "dist/lfs-5.1/dosfstools.spec" cause the problem.

Apr 13, 2011

[ZAKER分享] 纽约时报书评:甘地是怎样炼成的

几年前,英国作家帕特里克•弗兰奇(Patrick French)造访了位于印度古吉拉特邦艾哈迈达巴德市郊的甘地纪念馆(Sabarmati ashram)。1930年,圣雄甘地(Mahatma Gandhi)领导的"食盐长征"正是从这里出发,向大海前进。让弗兰奇大为震惊的是,纪念馆的公共厕所竟然秽气熏天,于是他就去质问纪念馆秘书由谁负责打扫厕所。
图为1906年左右的甘地。
莫罕达斯•K.甘地(Mohandas K. Gandhi)曾留学英国攻读法律,并取得了律师资格。1893年,年轻的甘地以律师的身份来到南非。
  
这位负责人解释说,有一位清洁女工每天都会过来打扫一个小时,但她走后,厕所不可避免地又会变脏。
然而,难道在圣雄对追随者的谆谆教导中,把自己造成的脏乱清理干净不是其中的一项基本原则吗?
"我们都是集中打扫厕所,在甘地诞辰日那一天,"这位秘书回答道,"我们把这当成一种象征性的活动,表明我们领会了他的信息所传达出的意思。"
甘地曾经向世人发出过许多信息,有些被人们忽略了,有些遭到了误解,还有一些信息,即便是时至今日,仍然和第一次从他口中说出时一样至关重要。大多数美国人,其实还包括许多印度中产阶级在内,对圣雄甘地的了解都仅限于于本•金斯利(Ben Kingsley)在那部奥斯卡获奖影片中塑造的银幕形象。他在影片中的表演令人倾倒,但是电影剧本却差强人意,几乎没有触及现实世界中的甘地那种令人困惑的复杂性。彼时,他既是一位虔诚的朝圣者,同时也是一位狡猾的政治家,他是禁欲主义的拥护者、非暴力不合作主义(satyagraha,真理的力量)的缔造者、宗教复兴运动的领导者、革命者以及社会改革家。
而最令约瑟夫•莱利维尔德(Joseph Lelyveld)感兴趣的却是甘地的最后一重身份。用他自己的话来说,他的新作——《伟大的灵魂》一书专注讨论甘地"逐步形成的选民观和社会观"以及他随之而来的行动——竭力要将这种观念强加在其时正"虔诚而又执迷不悟"的印度之上。想要找出一位能够为甘地立传的作者,就印度洋两岸来说,莱利维尔德尤其有资格。他曾为《纽约时报》报道南非新闻(1986年,他以种族隔离为主题的著作——《走出阴霾》(Move Your Shadow)荣获普利策奖),在上世纪60年代末,他又在印度度过了多年的记者生涯。莱利维尔德的这本新书体现了一名记者健康的怀疑精神,也展现了一位"印度通"对印度次大陆及其人民显得有些偏执的强烈兴趣。
这本书并不是一本百科全书式的传记,也并非是为那些对甘地知之甚少的初级读者们预备的。莱利维尔德假设他的读者们对甘地的生平已经有所了解,心中已经能够勾勒出其大致框架。尽管这本书也给出了一份极其简单的年表,并将其划分为南非和印度两大部分来帮助读者做到心中有数,但是其内容却频繁跳跃。读者想要跟上甘地的思想变迁过程或许本身就非易事,在某些时候,他的这种写作风格又平添了几分难度。
尽管如此,《伟大的灵魂》仍是一本值得注意的佳作,笔触生动、描写细腻、目光敏锐。大多数时候,甘地在南非度过的二十余载都仅仅被人们看作是其一生的序曲。莱利维尔德却对这段岁月给予了应有的重视。在一次反对等级制度的运动中,甘地写道,"我隐隐约约地相信,人生而平等,在南非,我曾一步一步地和这种优越论进行抗争。
莱利维尔德提醒我们,事实上,将这种朦胧的信念转化成明确的行动,甘地也经历了很长的一段时期。1893年,23岁的莫罕达斯•卡拉姆昌德•甘地(Mohandas Karamchand Gandhi)从印度孟买来到南非德班,这位机敏的年轻律师在英国接受了专业教育。一位富有的印度穆斯林商人聘请他来到此地为其代理一桩枯燥沉闷的民事诉讼。最开始,甘地对南非的兴趣仅停留在当地的宗教和饮食方面,而并非政治。在早期的一则宣传广告中,他声称自己是"密宗基督教联盟和伦敦素食协会的代理人"。但是,莱利维尔德又写道,"南非……从一开始就对他提出了挑战——他不清楚如何去解释,有着褐色皮肤的他,是如何看待自己在南非的所作所为的。"
起初,甘地仅仅只是有意去触犯那些歧视性法律和那些根深蒂固的地方习俗,对于像他一样受过良好教育、生活富足的印度人和那些"苦力"——贫困的矿场、种植园、铁路工人,他都一视同仁,同等对待。在当时的南非,这些"苦力"是主要的印度移民人口。这之后的二十年里,他所领导的旨在实现印度人和白人平等的非暴力运动,将会促使他去提倡人人平等,首先跨越种姓制度和宗教的界限,然后又打破穷富的屏障。这种过程是缓慢和不稳定的,但其趋势不可阻挡。(而他对于黑人渴望的权利所产生的认同感,一直到他离开非洲很久以后才逐渐形成。)
正如莱利维尔德告诉我们的那样,甘地在南非领导的运动所取得的成果既不明显,也不持久。在一次运动之后,他自己的支持者们将他打得鲜血淋漓,因为他们认为他太快就对政府妥协了。然而,他们也教会了他如何去调动群众——不仅是身为中产阶级的印度教徒和穆斯林移民,还有那些赤贫的底层百姓。正如他自己所说的,他已经找到了他"毕生的使命"。
1915年,甘地回到了印度,不久以后他就提出了印度独立的四项原则,用他的话说就是"独立大厦的四根支柱将会永远挺立"——印度教徒和穆斯林结成不可撼动的同盟;一致认同非暴力主义,将此作为原则,而非战略;通过纺纱以及其他一些自给自足的手工艺品改造印度总共约65万个村庄;废除印度罪孽深重的贱民制度。甘地为了实现这些目标,展开了多次尽管崇高,却注定要失败的斗争。莱利维尔德仔细审视了这些斗争,并作出了敏锐的判断。
 一路走来,他树敌众多——那些认为他过于同情穆斯林的正统印度教徒,那些将他宗教团结的要求看成是印度教的一种阴谋的穆斯林,那些认为他只不过是一个冒充内行的激进革命分子的英国人等等。但是在所有的敌人中,才华横溢、脾气暴躁的贱民领袖比姆拉奥•拉姆吉•安培多伽尔(Bhimrao Ramji Ambedkar)却是最难以对付的。直到如今,西方社会对安培多伽尔还知之甚少。他认为甘地那些旨在铲除贱民制度的非暴力运动充其量只是一种杂耍表演。他甚至还反对甘地为他领导的贱民们杜撰的新名称——"神的子民"(Harijans),认为这词显得有些屈尊俯就;他更喜欢"达利"(Dalits)一词,在印度梵文中的意思是"压碎的"、"破碎的"。
上世纪20年代,甘地在印度。
  
有时,甘地说除非印度废除贱民制度,印度的独立将永远不会到来;而有时他又声称贱民制度只有等印度获得独立以后才能消除。对于这种前后不一的说法,他却不愿道歉。"我无法将全身心都投入到贱民身上,而且还说,'忽略印度教教徒和穆斯林的团结或者是印度独立事业',"他告诉自己的一位友人,"所有这些彼此之间都互相交织,相互依赖。你会发现,在我的一生中,这一次我会强调这件事情,而下一次我又会强调另外一件事情。不过,这就好像是钢琴家弹钢琴,这次加重这个音符,下次又是另外一个音符。"这也正如他对自己的定位那样——他曾说自己是一名政治家,总是小心翼翼地平衡着一个选民群体和其他选民群体之间的要求。
莱利维尔德曾在《走出阴霾》一书中这样写道,"甘地曾希望在千千万万印度人民在道德上取得进步的同时,实现印度的独立,在这样的一次社会革命中,人民对独立和经济平等的追求才是主要的,而异族统治的崩溃只不过是革命成果的副产品。"最终,外国人的统治的确被推翻了,"但是冲突和不平等仍然存在于印度人中间,甚至更甚了。"
如今的印度仍然习惯将甘地称之为"国父",然而在莱利维尔德所说的他的"光轮"之外,我们很难再看到他的余辉。他那些有关性、纺纱、简单生活的理念已被遗忘已久。在并不安稳的表面之下,印度教和穆斯林的不和仍然在酝酿郁积着。贱民制度也依然存在。现在,不管在哪一个达利人的居住区,安培多伽尔那穿着双排扣铁青色西装、系着红色领带的标准版彩色雕像都要多于衣不遮体的圣雄像。
甘地早已预料到以上大多数情况的发生,有些也会陷于绝望。莱利维尔德认为,甘地一生最大的悲剧,并"不在于他遭到了暗杀,也不是因为他高贵的品质激起了暗杀者心中的仇恨。他的悲剧在于,尽管不情愿,但最终他还是看到自己改造世界的雄心也存在着一定的局限,正如李尔王(Lear)一样。"
不管怎样,莱利维尔德同时还写道,尽管甘地也许"一直到自己的弥留之际,都在与怀疑和自我做斗争,"但他"给千千万万的同胞们带来了困境,无论他们之间存在怎样的紧张关系,因为没有哪位近代的领导人曾这样做过。"再者,尽管他前后矛盾,但在他的一生中,他的印度梦想却从来未曾改变过。"如今,"在被自己的追随者暗杀之前不到三周的时候,他写道,"不管我们是印度教教徒、锡克教徒、穆斯林,还是拜火教徒,我们都必须忘记这种身份……在我们的家园,我们以何种方式呼唤神并不重要。"
在19、20世纪之交来临前夕,他在南非第一次敦促当地的印度人团结起来和压迫者抗争的时候,这是一种革命性的观念。当他在第一次世界大战之际回到祖国的时候,这是一种革命性的观念。而到了1947年,印度在取得独立的同时又因宗教仇恨而分裂时,这仍然是一种革命性观念。他曾屡次冒着生命危险,想要平息这种仇恨,然而令人悲哀的是,至今这仍是极具颠覆性的观念——在印度乃至更广阔的世界范围来说都是如此。
杰弗里•C.沃德(Geoffrey C. Ward)是一名传记作家和纪录片编剧,他少年时期曾在印度度过数年,目前正在撰写一本有关印度分裂的著作。



Sent from my iPad

Apr 12, 2011

Android graphics benchmark

   We need to know graphics benchmark in Android.
1. Get Android benchmark apk and console application. List them all
apk files:
    ApiDemos.apk
    com.qualcomm.qx.neocore.apk
    DrawTest_16_16.apk
    kr.co.ocosmos.cube.apk
    Quadrant_Standard_v1.1.2.apk
    se.nena.nenamark1.apk
    SkiaTest.apk
    SpeedTest.apk

console files:
    console_cube/
    3DMark/

2. Install them into Android system via adb.
$ ./adb install ApiDemoes.apk
$ ./adb install com.qualcomm.qx.neocore.apk
...
# Install all apk into Android devices.
# And then we push console test files into /system/bin directory, this directory is read-only in default, remount it as read-write.
$ mount -o remount rw /system
$ ./adb push console_cube/ /system/bin/console_cube
$ ./adb push 3DMark/ /system/bin/3DMark

3. Run APPS in Android UI and get performance test result.

3D benchmark
Neocore
25.8fps
NenaMark1
18.3fps
Cube
25ms/frame
Intro (3DMark)
61.57fps
Samurai (3DMark)
43.86fps
Proxycon (3DMark)
21.89fps
2D benchmark

ApiDemo (Graphics/OpenGL ES/Sprite Text)
15ms/frame
Concole_cube
70.9fps
SpeedTest (1024*600)
Landscape (Nop=0,GL=0)
30.50fps
Portrait (Nop=0,GL=0)
33.34fps
Landscape (Nop=2,GL=0)
71.74fps
Portrait (Nop=2,GL=0)
70.52fps
DrawTest
bmp 16bit, sur 16bit, landscape
71.61fps
bmp 16bit, sur 16bit, portrait
71.57fps
bmp 32bit, sur 32bit, landscape
70.91fps
bmp 32bit, sur 32bit, portrait
46.16fps
bmp 32bit, sur 16bit, landscape
71.11fps
bmp 32bit, sur 16bit, portrait
68.15fps
bmp 16bit, sur 32bit, landscape
51.10fps
bmp 16bit, sur 32bit, portrait
42.60fps
SkiaTest
Fill Rectangle (Test 1)
40381
Stretch blit with Dither (Test 2.1)
1641
Stretch blit without Dither (Test 2.2)
4475

Dimming (Test 3)
8574

256 color pallet blit (Test 4.1)
4078

Stretch blit (Test 4.2)
2542

Draw line (Test 5)
476665
2D/3D benchmark
Quadrant_Standard_v1.1.2.apk
1098 (Total)
218 (2D)
262 (3D)