pcDuino的linux移植二內核是啓動了,可是還存在問題,先分析啓動信息,再移植根文件系統 html
問題一:**沒法讀取「uEnv.txt」,來自MMC 0:1的** node
部分啓動信息: linux
閱讀uEnv.txt vim
**沒法從MMC 0:1讀的「uEnv.txt」的**
裝載文件「uEnv.txt」從MMC器件0:1 緩存
很明顯找不到uEnv.txt,uEnv.txt是設置啓動參數的,生成過程boot.cmd——>boot.src——>uEnv.txt app
1,建立boot.cmd設置啓動參數。boot.cmd: 佈局
SETENV的bootargs控制檯= ttyS0上,115200 noinitrd的init = / init的根= / dev/mmcblk0p2 rootfstype = ext4的rootwait恐慌= 10 $ {額外}
fatload MMC 0 0×43000000開機/ script.bin
fatload MMC 0×48000000開機/的uImage
BOOTM 0×48000000 測試
2。根據boot.cmd,生成的u-boot可以讀取的boot.src文件 ui
mkimage-C沒有A臂-T腳本-D boot.cmd boot.scr .net
3.聽說老版本的u-boot能讀取boot.scr,新版本的不能直接讀取。爲了驗證這個,我先只用boot.scr,不行再經過uEnv.txt讀取boot.scr:
BOOTENV = boot.scr
loaduimage = fatload MMC $ {mmcdev}中$ $ {LOADADDR} {BOOTENV}
=回聲從MMC跑步boot.scr腳本,mmcboot ...;源$ {LOADADDR}
4,燒寫實驗
直接用boot.scr:
改變@變化:〜/ $ Si/A10/pcduino的 vim boot.cmd的
SETENV的bootargs控制檯= ttyS0上,115200 noinitrd的init = / init的根= / dev/mmcblk0p2 rootfstype = ext4的rootwait恐慌= 10 $ {額外}
fatload MMC 0 0×43000000開機/ script.bin
fatload MMC 0×48000000開機/的uImage
BOOTM 0×48000000
保存退出
變化變化:〜/ Si/A10/pcduino $ mkimage-C沒有手臂-T腳本-D boot.cmd boot.scr
圖片名稱:
建立時間:週六04月20日21:41:43 2013
圖片類型:ARM Linux的腳本(未壓縮)
數據大小:225字節= 0.22 KB = 0.00 MB
加載地址:00000000
報名點:00000000
內容:
圖片0:217字節= 0.21 = 0.00 MB
若干這裏mkimage報錯或移植二中做出
改變@變化:/ Si/A10/pcduino〜$ sudo的安裝/ dev/sdb1到/ mnt /
[sudo的密碼變化:改變@變化:〜/ Si/A10/pcduino $ CP boot.scr到/ mnt /
放到pcDuino TF卡槽,設置串口115200 8 N 1啓動信息仍是
U-Boot的SPL 2012.10(2013年4月19日- 18時46分44秒)
內存:1024MB
孫喜SD / MMC:0
的U-Boot 2012.10(2013年4月19日- 18時46分44秒)的全志科技
CPU:孫喜家庭
電路板:pcDuino
I2C:準備
DRAM:1 GIB
MMC:孫喜SD / MMC:0
***警告-壞CRC,使用默認的環境
:串行
輸出:串行
錯誤:串行
命中任意鍵中止自動引導:0
閱讀uEnv.txt
**沒法從MMC 0:1中,讀「uEnv.txt」的**
加載文件「uEnv.txt」的MMC設備0:1
ext2文件系統安裝失敗...
**壞ext2分區或磁盤- MMC 0:1 **
ext2load -從Ext2文件系統負載的二進制文件
用uEnv.txt讀取boot.scr
改變@變化:〜/ $ Si/A10/pcduino的 vim uEnv.txt的
BOOTENV = boot.scr
loaduimage = fatload MMC $ {mmcdev}中$ $ {LOADADDR} {BOOTENV}
=回聲從MMC跑步boot.scr腳本,mmcboot ...;源$ {LOADADDR}
保存,退出,TF卡插到UBUNTU變的/ dev / sdc的
改變@變化:〜/ Si/A10/pcduino $ sudo的安裝/ dev/sdc1上到/ mnt / 改變@變化:〜/ Si/A10/pcduino CP uEnv.txt到/ mnt / 改變@變化:〜/ Si/A10 / pcduino $ sudo的使用umount / dev/sdc1上到/ mnt / 卸載:到/ mnt:未鑲嵌
TF卡插到pcDuino卡槽,鏈接串口設置爲115200 8 N 1,啓動信息以下:
U-Boot的2012.10(2013年4月19日 - 18時46分44秒)全志科技
CPU:孫喜家庭
電路板:pcDuino
I2C:準備
DRAM:1 GIB
MMC:孫喜SD / MMC:0
***警告-壞CRC,使用默認的環境
:串行
輸出:串行
錯誤:串行
命中任意鍵中止自動引導:0
閱讀uEnv.txt
讀取144字節
加載環境從uEnv.txt
閱讀boot.scr
讀取289字節
跳boot.scr的,
##44000000
錯誤的圖像格式的「源文件」命令,
閱讀script.bin的執行腳本
44900字節讀
閱讀的uImage
4693132字節讀
#從傳統的圖像引導內核在48000000 ...
圖片名稱:Linux的3.0.62
圖片類型:ARM Linux內核映像(未壓縮)
數據大小:4693068字節= 4.5 MIB
加載地址:40008000
報名點:40008000
驗證校驗... OK
加載內核映像... OK
OK
從內核開始...
<6>初始化子系統的cgroup CPUSET
<5> Linux版本3.0.62(改爲@變化)(gcc版本4.4.1(的Sourcery G+ +建興2009Q3-67))#1 PREEMPT週六4月20日18時32分39秒CST 2013
CPU:的ARMv7處理器413fc082]修訂版2(ARMv7體系),CR = 10c5387d的
CPU:VIPT的nonaliasing數據緩存,VIPT別名指令緩存
機:sun4i
<6>記憶切斷:
<6>馬裏:0x5c000000 - 0x5fffffff(64 MB)
<4>忽略沒法識別的標記0×00000000
<6>內存保留
:<6> SYS:0×43000000 - 0x4300ffff(64 KB)
<6> VE:0×44000000 - 0x48ffffff(80 MB)
<6> G2D:0×49000000 - 0x49ffffff (16 MB)
<6>液晶:0x5a000000 - 0x5bffffff的
存儲器(32 MB)政策:ECC禁用,數據高速緩存回寫
<6>芯片ID:A10(AW1623修訂版C)
<7>在節點0總頁數:245760
<7> free_area_init_node:節點0,pgdat c0887ea0,node_mem_map c094e000
<7>普通區:1280頁用於MEMMAP
<7>正常區域:保留0頁
<7>普通區:146176頁,後進先出法批:31
<7> HIGHMEM區:768 MEMMAP用於頁面
<7>區HIGHMEM:97536頁,後進先出批量:31
<7> PCPU ALLOC:S0 R0 d32768 u32768的alloc = 1 * 32768
<7> PCPU ALLOC:[0] 0
內置1區順序運行咱們,移動分組上。總頁數:243712
<5>內核命令行:請將console = ttyS0,115200根= 8恐慌= / dev/mmcblk0p2 rootwait記錄等級= 10
<6> PID哈希表項:4096(順序爲:2,16384字節)
<6>的dentry緩存哈希表項:131072(順序爲:7,524288字節)
<6>的inode緩存哈希表項:65536(順序爲:6,262144字節)
<6>內存:448MB 512MB = 960MB總額的
<5>內存:833852k / 833852k可用,149188k保留,393216K HIGHMEM
<5>虛擬內核內存佈局:
向量:爲0xffff0000 - 0xffff1000(4 KB)
fixmap:0xfff00000 - 0xfffe0000(896 KB)
.........太長了此處省略若干,經過上面的啓動信息發現uEnv.txt讀取正常
<0>內核恐慌-不一樣步:試圖殺害的init!
[2.650000]內核恐慌-不一樣步:試圖殺死的init!
<c003e92c>](+0 unwind_backtrace×0/0x13c)從[<c05fa2ac>](恐慌+0×74/0×188)
[2.660000] [<c003e92c>](unwind_backtrace +0從×0/0x13c)[<c05fa2ac>](驚恐+0×74/0×188)
[<c05fa2ac>](恐慌+0×74/0)[<c006bfd0>](do_exit +0 x6c4 / 0×188×788)
[2.670000] [<c05fa2ac>](恐慌+0×74/0×188)[<c006bfd0>]( do_exit +0 x6c4 / 0×788)
[<c006bfd0>](do_exit +0 x6c4 / 0×788)[<c003c87c>](模具+0×288/0×300)
[2.690000] [<c006bfd0>](do_exit + 0x6c4 / 0)[<c003c87c>](模具+0×288/0×788×300)
[<c003c87c>](模具+0×288/0×300)從[<c0042cb0>](__do_kernel_fault +0× 74/0×84)
[2.700000] [<c003c87c>](模具+0×288/0×300)[<c0042cb0>](__do_kernel_fault +0×74/0×84)
[<c0042cb0>](__do_kernel_fault + 0×74/0×84)從[<c0042e40>](do_page_fault +0×180/0x2e4)
[2.720000] [<c0042cb0>]「(__do_kernel_fault +0×74/0×84)[<c0042e40>,](do_page_fault +0×180/0x2e4)
[<c0042e40>](do_page_fault +0×180/0x2e4)從[<c00312b4>](do_DataAbort +0×34/0×98)
[2.730000] [<c0042e40>](do_page_fault +0 ×180/0x2e4)從[<c00312b4>](do_DataAbort +0×34/0×98)
[<c00312b4>] [<c0037dd0>](__dabt_svc +0×70(do_DataAbort +0×34/0×98) / 0XA0)
[2.750000] [<c00312b4>](do_DataAbort +0×34/0×98)[<c0037dd0>](__dabt_svc +0×70/0xa0)
異常的堆棧(0xe783bee8 0xe783bf30)
[2.770000]異常堆棧( 0xe783bee8 0xe783bf30)
bee0::29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
[2.780000] bee0:29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30,
[2.790000] BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30
BF20:f8a905a8 c0059aac 20000013 FFFFFFFF
[2.810000] BF20:20000013 c0059aac f8a905a8 FFFFFFFF
[<c0037dd0>](__dabt_svc +0×70/0xa0)[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[2.810000] [<c0037dd0>] (__dabt_svc +0×70/0xa0)從[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)[<c040b868>](alloc_pin,中XC / 0 +0×60)
[2.830000] [<c0059aac>]「(sunxi_gpio_request_array +0×160/0×540)從[<c040b868>](alloc_pin +0 / 0×60)
[<c040b868>](alloc_pin +0 XC XC / 0×60)從[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0×144)
[2.850000] [<c040b868>](alloc_pin +0 XC / 0×60)從[<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C× 144)
[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0)[<c0031378>]「(do_one_initcall +0×34/0×144×180)
[2.860000] [<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C×144)從[<c0031378>](do_one_initcall +0×34/0×180)
[<c0031378>](do_one_initcall +0×34/0)[<c00084d4>](kernel_init +0×180×108/0×194)
[2.880000] [<c0031378>](do_one_initcall +0×34/0×180×194)[<c00084d4>](kernel_init +0×108/0)
[<c00084d4>](kernel_init +0×108/0× 194)[<c0039358>](kernel_thread_exit +0×0/0×8)
[2.900000] [<c00084d4>](kernel_init +0×108/0×194)來自[<c0039358>的(kernel_thread_exit +0×0 / 0×8)
<0>從新啓動在10秒.. [2.920000]在10秒內從新啓動..
這下內核啓動算成功了,因爲尚未文件系統,找不到進程初始化,故殺的init
問題二:<0>內核恐慌 - 不一樣步:企圖殺死初始化!
上面分析了,其實就是找不到init進程,而文件系統提供這些進程。先寫到這,明天開始移植文件系統
下面開始移植根文件系統:
改爲@變化:〜/ Si/A10/pcduino $ MKDIR根文件系統
1,編譯,安裝busybox的
獲取busybox的源碼http://www.busybox.net/ 點擊BusyBox的1.21.0下載源碼,解壓到工做目錄並進入該目錄
改爲@變化:〜/ Si/A10/pcduino/busybox-1.21.0號$ make menuconfig時
先採用默認配置,不行回來再改
改爲@變化:〜/ Si/A10/pcduino/busybox-1.21.0號$ VIM的Makefile
修改:
164:CROSS_COMPILE =臂沒有Linux的gnueabi
190:ARCH =手臂
保存退出,開始編譯
改變變化:〜/ Si/A10/pcduino/busybox-1.21.0, 使
........ / /過程有點長,省略若干
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
試圖圖書館:
圖書館隱窩地穴米不須要,不包括
圖書館m的須要,也不能排除它(還)的
最後一個環節:米
DOC busybox.pod
DOC BusyBox的。 TXT
DOC busybox.1
DOC BusyBox.html
編譯結束,開始安裝到指定目錄
變化變化:〜/ Si/A10/pcduino/busybox-1.21.0號$ 使CONFIG_PREFIX =。。/ rootfs的安裝
-----------------
你可能會須要讓你的BusyBox二進制文件的
setuid root的,以確保全部配置的applet將
工做
改爲@變化:〜/ Si/A10/pcduino/busybox-1.21.0, CD .. / rootfs的/ 改變@變化:〜/ Si/A10/pcduino/rootfs的$ ls-l的 12 drwxr-XR-X 2的變化改變4096 2013年4月21日16:05本lrwxrwxrwx 1的變化而變化11 2013年4月21日16:05 linuxrc的- > BIN / busybox的 drwxr-XR-X 2的變化而變化4096 2013年4月21日16:05 SBIN drwxr XR-X 4的變化而變化:4096 2013年4月21日16:05 USR 變化@改變:〜/ Si/A10/pcduino/rootfs的$
(2)建立設備文件
改變@變化:〜/ Si/A10/pcduino/rootfs的$ MKDIR dev的變化的變化:〜/ Si/A10/pcduino/rootfs的$ CD DEV / 改變@變化:〜/ $ sudo的Si/A10/pcduino/rootfs/dev mknod的控制檯C 5 1 變化變化:〜/ $ sudo的MKNOD空Si/A10/pcduino/rootfs/dev C 1 3 變化變化:〜/ Si/A10/pcduino/rootfs/dev $ ls-l的 總0 CRW- R-R-1根5,1 2013年4月21日17:00控制檯 CRW-R-R-1根1根,2013年4月21日17:00空 3。構建配置文件
改爲@變化:〜/ Si/A10/pcduino/rootfs $ MKDIR等
改爲@變化:〜/ Si/A10/pcduino/rootfs的$ VIM etc / inittab中
#/ etc / inittab中
控制檯:: askfirst :-/ bin / sh的
保存退出
4,安裝的glibc庫
變化變化:〜/ Si/A10/pcduino/rootfs的$ MKDIR-P解放變化變化:〜/ Si/A10/pcduino/rootfs的 LS 斌dev等的inittab中解放linuxrc的SBIN的USR 變化變化:〜/ Si/A10號/ pcduino / rootfs的 CD *因此* / home/change/Si/A10/pcduino/rootfs/lib /-D 的變化的變化:〜/ tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib的$ CD ..的/ usr / lib中的變化變化:〜/ tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/usr/lib的 CP 美圓 *。因此* /的home/change/Si/A10/pcduino/rootfs /解放/-D
5燒寫,測試
改爲@變化:〜/ tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/usr/lib $ CD / home/change/Si/A10/pcduino / 改變@變化:〜/ Si/A10 / $ sudo的pcduino安裝/ dev/sdc2的到/ mnt / [sudo的密碼改變:改變@變化:〜/ Si/A10/pcduino $ sudo的CP-R根文件系統到/ mnt /
改變@變化:〜/ Si/A10/pcduino $ sudo的使用umount / dev/sdc2
插TF到pcDuino,系統啓動
U-Boot的2012.10(2013年4月19日 - 18時46分44秒)全志科技
CPU:孫喜家庭
電路板:pcDuino
I2C:準備
DRAM:1 GIB
MMC:孫喜SD / MMC:0
***警告-壞CRC,使用默認的環境
:串行
輸出:串行
錯誤:串行
命中任意鍵中止自動引導:0
閱讀uEnv.txt
讀取144字節
加載環境從uEnv.txt
閱讀boot.scr
讀取289字節
跳boot.scr的,
##44000000
錯誤的圖像格式的「源文件」命令,
閱讀script.bin的執行腳本
44900字節讀
閱讀的uImage
4693132字節讀
#從傳統的圖像引導內核在48000000 ...
圖片名稱:Linux的3.0.62
圖片類型:ARM Linux內核映像(未壓縮)
數據大小:4693068字節= 4.5 MIB
加載地址:40008000
報名點:40008000
驗證校驗... OK
加載內核映像... OK
OK
從內核開始...
<6>初始化子系統的cgroup CPUSET
<5> Linux版本3.0.62(改爲@變化)(gcc版本4.4.1(的Sourcery G+ +建興2009Q3-67))#1 PREEMPT週六4月20日18時32分39秒CST 2013
CPU:的ARMv7處理器413fc082]修訂版2(ARMv7體系),CR = 10c5387d的
CPU:VIPT的nonaliasing數據緩存,VIPT別名指令緩存
機:sun4i
<6>記憶切斷:
<6>馬裏:0x5c000000 - 0x5fffffff(64 MB)
<4>忽略沒法識別的標記0×00000000
<6>內存保留
:<6> SYS:0×43000000 - 0x4300ffff(64 KB)
<6> VE:0×44000000 - 0x48ffffff(80 MB)
<6> G2D:0×49000000 - 0x49ffffff (16 MB)
<6>液晶:0x5a000000 - 0x5bffffff的
存儲器(32 MB)政策:ECC禁用,數據高速緩存回寫
<6>芯片ID:A10(AW1623修訂版C)
<7>在節點0總頁數:245760
<7> free_area_init_node:節點0,pgdat c0887ea0,node_mem_map c094e000
<7>普通區:1280頁用於MEMMAP
<7>正常區域:保留0頁
<7>普通區:146176頁,後進先出法批:31
<7> HIGHMEM區:768 MEMMAP用於頁面
<7>區HIGHMEM:97536頁,後進先出批量:31
<7> PCPU ALLOC:S0 R0 d32768 u32768的alloc = 1 * 32768
<7> PCPU ALLOC:[0] 0
內置1區順序運行咱們,移動分組上。總頁數:243712
<5>內核命令行:請將console = ttyS0,115200根= 8恐慌= / dev/mmcblk0p2 rootwait記錄等級= 10
<6> PID哈希表項:4096(順序爲:2,16384字節)
<6>的dentry緩存哈希表項:131072(順序爲:7,524288字節)
<6>的inode緩存哈希表項:65536(順序爲:6,262144字節)
<6>內存:448MB 512MB = 960MB總額的
<5>內存:833852k / 833852k可用,149188k保留,393216K HIGHMEM
<5>虛擬內核內存佈局:
向量:爲0xffff0000 - 0xffff1000(4 KB)
fixmap:0xfff00000 - 0xfffe0000(896 KB)
............ / /太長了,省略若干
<0>內核恐慌-不一樣步:試圖殺害的init!
[2.650000]內核恐慌-不一樣步:試圖殺死的init!
<c003e92c>](+0 unwind_backtrace×0/0x13c)從[<c05fa2ac>](恐慌+0×74/0×188)
[2.660000] [<c003e92c>](unwind_backtrace +0從×0/0x13c)[<c05fa2ac>](驚恐+0×74/0×188)
[<c05fa2ac>](恐慌+0×74/0)[<c006bfd0>](do_exit +0 x6c4 / 0×188×788)
[2.670000] [<c05fa2ac>](恐慌+0×74/0×188)[<c006bfd0>]( do_exit +0 x6c4 / 0×788)
[<c006bfd0>](do_exit +0 x6c4 / 0×788)[<c003c87c>](模具+0×288/0×300)
[2.690000] [<c006bfd0>](do_exit + 0x6c4 / 0)[<c003c87c>](模具+0×288/0×788×300)
[<c003c87c>](模具+0×288/0×300)從[<c0042cb0>](__do_kernel_fault +0× 74/0×84)
[2.700000] [<c003c87c>](模具+0×288/0×300)[<c0042cb0>](__do_kernel_fault +0×74/0×84)
[<c0042cb0>](__do_kernel_fault + 0×74/0×84)從[<c0042e40>](do_page_fault +0×180/0x2e4)
[2.720000] [<c0042cb0>]「(__do_kernel_fault +0×74/0×84)[<c0042e40>](do_page_fault +0×180/0x2e4)
[<c0042e40>](do_page_fault +0×180/0x2e4)從[<c00312b4>](do_DataAbort +0×34/0×98)
[2.730000] [<c0042e40>](do_page_fault +0 ×180/0x2e4)從[<c00312b4>](do_DataAbort +0×34/0×98)
[<c00312b4>] [<c0037dd0>](__dabt_svc +0×70(do_DataAbort +0×34/0×98) / 0XA0)
[2.750000] [<c00312b4>](do_DataAbort +0×34/0×98)[<c0037dd0>](__dabt_svc +0×70/0xa0)
異常的堆棧(0xe783bee8 0xe783bf30)
[2.770000]異常堆棧( 0xe783bee8 0xe783bf30)
bee0::29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
[2.780000] bee0:29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30,
[2.790000] BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30
BF20:f8a905a8 c0059aac 20000013 FFFFFFFF
[2.810000] BF20:20000013 c0059aac f8a905a8 FFFFFFFF
[<c0037dd0>](__dabt_svc +0×70/0xa0)[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[2.810000] [<c0037dd0>] (__dabt_svc +0×70/0xa0)從[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)[<c040b868>](alloc_pin,中XC / 0 +0×60)
[2.830000] [<c0059aac>]「(sunxi_gpio_request_array +0×160/0×540)從[<c040b868>](alloc_pin +0 / 0×60)
[<c040b868>](alloc_pin +0 XC XC / 0×60)從[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0×144)
[2.850000] [<c040b868>](alloc_pin +0 XC / 0×60)從[<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C× 144)
[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0)[<c0031378>]「(do_one_initcall +0×34/0×144×180)
[2.870000] [<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C×144)從[<c0031378>](do_one_initcall +0×34/0×180)
[<c0031378>](do_one_initcall +0×34/0)[<c00084d4>](kernel_init +0×180×108/0×194)
[2.880000] [<c0031378>](do_one_initcall +0×34/0×180×194)[<c00084d4>](kernel_init +0×108/0)
[<c00084d4>](kernel_init +0×108/0× 194)[<c0039358>](kernel_thread_exit +0×0/0×8)
[2.900000] [<c00084d4>](kernel_init +0×108/0×194)來自[<c0039358>的(kernel_thread_exit +0×0 / 0×8)
<0>從新啓動在10秒.. [2.920000]在10秒內從新啓動..
仍是沒有成功啓動文件系統,各位大神知道的還望賜教,一塊兒解決這個問題。待續……
轉載自CSDN,感謝我用國芯分享。
原帖地址:http://blog.csdn.net/u010216127/article/details/8829378