楜ãã¿ã®ããã«ããã®ãããªç¯çŽããç空äžã®ç圢ãããžã§ã¯ãã§ã¯ãªããæã掻æ°ã®ãã壮倧ãªãããžã§ã¯ã-Linuxã«ãŒãã«ã§è¡ãããã«ããŸãïŒ
ãã®èšäºã®æ§é ã¯æ¬¡ã®ãšããã§ãã
çè«çã«ã¯ããã®èšäºã¯2ã€ã®éšåã«åããããšãã§ããŸããã¿ãã¬ããã«é¢ããæè¡çãªè©³çŽ°ãšãLinuxã«ãŒãã«ã§ã®extern constã®äœ¿çšã§ãã åœæã®æ¬æ Œçãªåºçç©ã¯æ©èœããªãããã«æããã®ã§ããã¹ãŠã®è³æã1ã€ã®èšäºã«ãŸãšããŸããã
èæ¯ ^
2011幎ã«æ»ã£ãŠããã£ã€ããããã«é¢ããã¬ãã¥ãŒã®ããã«ã€ããŠèªã¿ãŸããã [3] [4] [5] ã åœç¶ãç§ã¯ãã®ãããªå¥è·¡ã欲ããã£ãã®ã§æ³šæããŸããã
ç§ã¯å°ãéãã ããæ ç»ãèŠããã麻éãæšæž¬ãããâŠãããŠããã«ç§ã®æèŠã¯ä»¥åã®ãã®ã«ä»£ãããã®ã«ãªããŸãã- [6] ã
ãã®åŸãã¿ãã¬ãããããã°ã©ããŒã®èŠ³ç¹ããç 究ããããšãã€ãŸããããã«éåžžã®Linuxãã€ã³ã¹ããŒã«ããäœããã³ã³ãã€ã«ããããšã決å®ãããŸããã
Flytouch 2 / Superpad III ^ ã¿ãã¬ãã
èšèŒãããŠããããšã¯ãã¹ãŠããã®ãããªèå¥ããŒã¯ãä»ããŠããChinapadã«åœãŠã¯ãŸããŸãã
èŠãã
DF-MID10-IX210-V1.1
2010-01-20
XW11070501B512M03101
2010-01-20
XW11070501B512M03101
ããã« [8]ãªã¿ã¯ãã«ããå©çšå¯èœã åçã§ã¯ãJTAGãšUSARTã®çµè«ãæ確ã«èŠãããšãã§ããŸãã ããŒãã³ã°ã«ã泚æããŠãã ããã
ãã¡ãŒã ãŠã§ã¢ ^
ããã€ã¹ããã©ãã·ã¥ããã«ã¯ãååãfirmware2ãfirmware-discoveryãbootloader-discoveryã®ãã¡ã€ã«ãFATãã¡ã€ã«ã·ã¹ãã ã®ããSDã«ãŒãã«ã¢ããããŒãããå¿ èŠããããŸãã ã³ãã¯ã¿ã«æ¿å ¥ããã¿ãã¬ããã®é»æºãå ¥ããŸãã ïŒ256MBã®ãã©ãã·ã¥ãã©ã€ããšW95 FAT32ãã¡ã€ã«ã·ã¹ãã ã§åäœããŸãã-fdiskã®èå¥å0xBïŒã
åäœãããã¡ãŒã ãŠã§ã¢ãå¿ èŠã«ãªããŸãã ãã®èšäºã®äž»é¡ã¯å€ããªã£ãŠããŸãããããã§åäœããããŒãžã§ã³ãèŠã€ããããšãã§ããŸã- [12] ã AxlienããŒãžã§ã³ã䜿çšããŸããã
ãã¡ã€ã«ã®ç®çïŒ
- * -discoveryãã¡ã€ã«ã¯ãæŽæ°ã«å¿ èŠãªããŒã¿ãå«ãåçŽãªzipã¢ãŒã«ã€ãã§ãã firmware-discoveryã«ã¯ãAndroidã«é¢ãããã¹ãŠãå«ãŸããŠããŸãã ããŒãããŒããŒã«ã€ããŠã¯äœãèšããŸãã-ããã¯ç§ã«ã¯ããããŸããã§ããããååãããããšããã®ããŒãããŒããŒã®æŽæ°ã¯ã©ã¡ãããæ確ã§ã¯ãªãããšãæšæž¬ã§ããŸãã
- firmware2ãã¡ã€ã«ãæãéèŠã§ãã åœæããããã¯ãŒã¯äžã®ã©ãã«ããã®ãã¡ã€ã«ã®åœ¢åŒã«é¢ããèšåã¯ãããŸããã§ããã ç§ã¯ãäžåœäººã¯ããããŠãã®ãããªå®ããžã£ã³ã¯ã§ãããæå·ã«åºã¥ãã匷åãªã·ã¹ãã ãäœæã§ããªããšæããŸãã...ãããŠç§ã¯æ£ããã£ãïŒ æåã®192ãã€ãã¯åãªããŽãã§ãã åäœäžã®ãã¡ãŒã ãŠã§ã¢ããfirmware2ãååŸããæå®ãããããããŒããŒãã§ã¯ã€ãã§ããŸã-ãã¡ãŒã ãŠã§ã¢ã®æŽæ°ããã»ã¹ã¯åŒãç¶ãéå§ãããŸã [10] ã 次ã¯ãmkimageã䜿çšããŠãã©ã¡ãŒã¿ãŒãååŸã§ããéåžžã®U-Bootã€ã¡ãŒãžã§ãã
ãããã£ãŠãã¿ãã¬ããçšã®ç¬èªã®äœæ¥ã³ã¢ïŒzImageïŒãæ§ç¯ããåããã©ã¡ãŒã¿ãŒã§U-Bootã€ã¡ãŒãžãäœæãã192ãã€ãã®ããããŒãè¿œå ãããšãLinuxã®ããŒãžã§ã³ãããŠã³ããŒãã§ããŸãã
ãå ¬åŒããã¡ãŒã ãŠã§ã¢ã§éã¶æ©äŒããããŸã2ã zImageãã¡ã€ã«ã解åããã³ããã¯ããã¯ããããã®ããŒã«ããããŸã [9] ã ããã€ã¹ã®æŽæ°ã·ããªãªã解åããŠåŠç¿ã§ããŸããç¹ã«ãããŒãããŒããŒæ€åºã®æŽæ°ã®å 容ãšæ¹æ³ãç解ã§ããŸãã äžæ¹ãäžèšã®ã¹ã¯ãªãããç¡å¹ã«ããŠãbusyboxã·ã§ã«ã§çµäºããããšã¯å¯èœã§ãã
ã«ãŒãã«ã¢ã»ã³ã㪠^
ãã®ããã»ããµã®ã«ãŒãã«ãœãŒã¹ãæ¢ããŠãç§ã¯è°è«ã«åºäŒããŸãã [13] ã誰ãatp_uestcãZT-180ã¿ãã¬ããã®ã«ãŒãã«ãœãŒã¹ã®çºèŠãçºè¡šããŸããã
ä»ã§ã¯ãã€ãã³ãã®å¹Žè¡šããæåã«ããŒãããããšããã³ã¢ã®çš®é¡ãæãåºãã®ã¯å°é£ã§ãããããããããã©ããã©ãã- [14] ããŸãã¯ããããå€æŽ- [15] ã çµæããèŠããŠããŸããã§ãã-ããŸããããŸããã§ãããããŒãããã»ã¹ããDecompressing kernel ...ãã§ããªãŒãºããŸããã
ãã°ãããããšããã£ã¹ã«ãã·ã§ã³ã«yurayãç»å Žãããã®ããã»ããµãŒã®ãµããŒããLinuxã«ãŒãã«ã®3çªç®ã®ããŒãžã§ã³ã«è¿œå ãããŸããã chinapadã§èµ·åã§ããã®ã¯ãã®ããŒãžã§ã³ã®ã«ãŒãã«ã§ããã
kernel.orgããã«ãŒãã«ããŒãžã§ã³3.4.xã®ãœãŒã¹ã³ãŒããããŠã³ããŒãããŸãã å·çæç¹ã§ãããŒãžã§ã³3.4.108以äžã¯æ£åžžã«ã³ã³ãã€ã«ãããŸããã rtck.org/zt180/patches/zt180_b0_3.4.patch.xzããyurayããã«ãŒãã«ãããŠã³ããŒãããŠããããé©çšããŸãã
$ cd /path/to/linux-3.4.x $ patch -p1 -i /path/to/zt180_b0_3.4.patch
æ§æãæ§æããŸãã ãã®chinapadã®æ£ããèšå®ãèŠãŠããŸããã®ã§ãããããdot-configãåãããšããå§ãããŸã [19] ïŒ
$ make V=1 ARCH=arm CROSS_COMPILE=/path/to/toolchain/arm-infotm-linux-gnueabi- oldconfig
ã«ãŒãã«ã«ã¯initramfsãå¿ èŠã§ãã ç§ã¯Slackware GNU / Linux OSã®ãŠãŒã¶ãŒã§ãããã®ãããåŸã§intrdã€ã³ã¹ããŒã©ãŒã䜿çšããŠãåŸã§ã¿ãã¬ããã«Slakaãã€ã³ã¹ããŒã«ã§ããããã«ããŸããã ããŠã³ããŒãuinitrd-kirkwood.img [16] ãkernels / README.txtãã¡ã€ã«ã®åãå Žæã«ãã€ã¡ãŒãžã解åããããã®ã³ãã³ããèšèŒãããŠããŸãã ç»åã¯å ã®ã¹ã©ã«ããåãŸããŸããããªããªãã x86 / amd64ã®äžã«ãã€ããªãå«ãŸããŠããŸãããARMã®äžã«å¿ èŠã§ãã
ãã©ã«ããŒãäœæãããã®äžã«ç»åã解åããŸãïŒ
$ mkdir -p /path/to/uinitrd.extracted $ pushd !$ $ dd if=/path/to/uinitrd-kirkwood.img bs=64 skip=1 | gzip -dc | sudo cpio -div $ popd
configã«ç»åããããã©ã«ããŒãžã®ãã¹ãæå®ããŸãã
ïŒ...
CONFIG_BLK_DEV_INITRD = y
CONFIG_INITRAMFS_SOURCE = "/ path / to / uinitrd.extracted"
CONFIG_INITRAMFS_ROOT_UID = 0
CONFIG_INITRAMFS_ROOT_GID = 0
ïŒ...
ã«ãŒãã«ã2ã€ã®ãã¹ã§ã³ã³ãã€ã«ããŸãã
# clean initrd directory $ sudo rm -rf /path/to/uinitrd.extracted/lib/{modules, firmware} # build kernel for the first time $ make KALLSYMS_EXTRA_PASS=1 ARCH=arm CROSS_COMPILE=/path/to/toolchain/arm-infotm-linux-gnueabi- -j2 zImage # build modules against the kernel $ make KALLSYMS_EXTRA_PASS=1 ARCH=arm CROSS_COMPILE=/path/to/toolchain/arm-infotm-linux-gnueabi- -j2 modules # install modules into initramfs dir $ sudo make ARCH=arm CROSS_COMPILE=/path/to/toolchain/arm-infotm-linux-gnueabi- -j2 modules_install INSTALL_MOD_PATH=/path/to/uinitrd.extracted/ # install firmware to initramfs folder $ sudo make ARCH=arm CROSS_COMPILE=/path/to/toolchain/arm-infotm-linux-gnueabi- -j2 firmware_install INSTALL_MOD_PATH=/path/to/uinitrd.extracted/ # remove unnecessary files $ sudo rm -rf /path/to/uinitrd.extracted/lib/modules/3.4.*/{build,source} # build the kernel again, with initramfs dir contains modules $ make KALLSYMS_EXTRA_PASS=1 ARCH=arm CROSS_COMPILE=/path/to/toolchain/arm-infotm-linux-gnueabi- -j2 zImage
ãšã©ãŒãåºãå ŽåããããŸã [17] [18] ã ãšã©ãŒããã¹ãã§ææ¡ãããŠãã解決çã«å©ããããŸããïŒãã©ã¡ãŒã¿ãŒKALLSYMS_EXTRA_PASS = 1ã
次ã«ããã¡ãŒã ãŠã§ã¢2ãäœæããŸãã
# make u-boot image $ /path/to/mkimage -A arm -C none -O linux -T kernel -a 0x40008000 -e 0x40008000 -n linux-3.4 -d arch/arm/boot/zImage arch/arm/boot/uImage # make firmware2 $ cat /path/to/firmware2.header arch/arm/boot/uImage > firmware2
ããããã¿ãã¬ãããããŒãããŸãã
ã¢ã»ã³ããªãèªååããã¹ã¯ãªãããäœæãããŸãã [19] ã 次ã®ã³ãã³ãã䜿çšãããŸããã
$ ( time ./my_build.sh ) |& tee `date +%M%H_%F`-build-log.txt
ããŠã³ããŒãæžã¿-USBãæ©èœãããããæ£ç¢ºã«ã¯ãããŒãã«é»åãäŸçµŠãããŠããŸããã ç§ã¯yurayã«å©ããæ±ããŸãããã圌ã«ã¯ãããããç§ã®ãã£ã€ããããã®ã¬ã€ã¢ãŠãã«ã¯ZT-180以å€ã®ç°ãªãé ç·ããããšçããŸããã
ãããããã®çŽ æŽãããèšäºãèŠã€ããŸããã [11]äœæ¥ã³ã¢ã®éšåãå解ããæ¹æ³ã«ã€ããŠã USBã«é¢é£ãããå ã®ããã¡ãŒã ãŠã§ã¢ã®æ©èœã®ã·ã¹ãã ã³ãŒãã埩å ãããœãŒã¹ã³ãŒãã®ããŒãžã§ã³ãšæ¯èŒããããšã«ããŸããã æ®å¿µãªããšã«ãé¢æ°ã¯æ£ç¢ºãªæåã°ã©ãã«äžèŽããŸããã ãã ããäœæ¥ã³ã¢ã«ã¯ãœãŒã¹ã³ãŒãã«ã¯ãªãé¢æ°ããããŸããã ã©ãããUSBããŒãã«åœãå¹ã蟌ãéæ³ããããŸãããç§ã¯ç§å¯ã®ããŒã«ã®äžã«ãããæ®ããŸãã...
埩å ãããã¢ã»ã³ãã©ã³ãŒãã調æ»ããéçšã§ã1ã€ã®èå³æ·±ãç¹ã«æ°ä»ããŸãããå€ãã®é¢æ°ã§ãå¥åŠãªæ瀺ããšãããŒã°ã«ç¶ããŠããŸãã
/* ... */ c039e32c: e59f0030 ldr r0, [pc, #48] ; c039e364 <_binary_0xc039e2e8_imapx200_decode_suspend_start+0x7c> /* ... */ c039e360: e89da800 ldm sp, {fp, sp, pc} c039e364: f0200000 undefined instruction 0xf0200000 c039e368: c24b1c9c subgt r1, fp, #39936 ; 0x9c00
0xF0200000ãåç §ããŠãã ããïŒ å¥åŠãªãããŸããªæ瀺...ãããŠããã€ãã®å Žæã§ããçºèŠãããŸããã ããã¯ç¹å®ã®ããŒã¹ã¢ãã¬ã¹ã§ããã€ãŸããçè«çã«ã¯åé¢æ°ãã4ïŒ4ïŒïŒãã€ããç¯çŽã§ããããšãæå³ããŸãïŒãã®å€ã1ãæã«å ¥ãããšããã¹ãŠã®é¢æ°ã1ã€ã®ã¢ãã¬ã¹ã«ããŒãããŸã-å®æ°ãååŸããŸãïŒ
æåžžæ§ ^
ãã€ã€ãŒãº [20]ãã¹ãŠãéåžžã«ããæãããŠããŸãã ç§ã¯ããã€ãã®èª¬æã ããããŸãã
Cããã³C ++èšèªã®ã³ã³ãã€ã©ã¯ã·ã³ã°ã«ãã¹ã§ããã€ãŸããç¬èªã«å®æ°ãæé©åããããšã¯ã§ããŸããã å°ãªããšãã/ Gwã¹ã€ãããªã©ããªã³ã«ãŒããã®ãã«ããå¿ èŠã§ãã [1] ã
åãã¯ã³ãã¹ã®åŒ±ç¹ãæã«å ¥ããŸãïŒextern constã䜿çšããŸã [1] ã ã¢ã€ãã¢ã¯ã次ã®ããã«ããããŒãã¡ã€ã«ã«å®æ°ãèšè¿°ããããšã§ãã
#ifndef MY_CONST_H #define MY_CONST_H extern const int my_constant; #endif /* MY_CONST_H */
次ã«ããã¡ã€ã«ã«è¡ãæžããŸãïŒ
const int my_constant = 42;
ä»»æã®ãããŒããã£ã¹ããŠãããã«é
眮ã§ããŸãã ããã§ãã³ã³ãã€ã©ã¯ã³ãŒãã«å®æ°å€ãçž«ãããšãã§ããªããªããŸããããããåç
§ããå¿
èŠããããŸãã ãªã³ã«ã¯ãå®æ°å€ããããªããžã§ã¯ããã¡ã€ã«ã1ã€ã ãåä¿¡ãããã®åŸãã³ãŒãå
ã®æçµã¢ãã¬ã¹ã眮ãæããŸãã ãã¡ããããªãã·ã§ã³ããããŸãããäžè¬çãªã±ãŒã¹ã§ã¯ãã³ã³ãã€ã©ãŒã ãã§ã¯ãã®ãããªããªãã¯ã®åã«ç¡åã§ãããäžèšã®ããã«åŒ·å¶ãããŸãã ãã ããããããªãã¥ã¢ã³ã¹ããããŸã [21] ã
å®éšã®ããã«ã次ã®å€æŽãè¡ãå¿ èŠããããŸã [19] ïŒ
èŠãã
diff -ru ./linux-3.4.108/arch/arm/mach-imapx200/Makefile ../linux-3.4.108/arch/arm/mach-imapx200/Makefile --- ./linux-3.4.108/arch/arm/mach-imapx200/Makefile 2015-09-09 12:17:52.483020878 +0300 +++ ../linux-3.4.108/arch/arm/mach-imapx200/Makefile 2015-09-08 17:11:45.775035963 +0300 @@ -6,7 +6,7 @@ #IMAPX200 support files -obj-$(CONFIG_CPU_IMAPX200) += irq.o clock.o time.o devices.o pwm.o +obj-$(CONFIG_CPU_IMAPX200) += irq.o clock.o time.o devices.o pwm.o constants.o diff -ru ./linux-3.4.108/arch/arm/mach-imapx200/include/mach/imapx_base_reg.h ../linux-3.4.108/arch/arm/mach-imapx200/include/mach/imapx_base_reg.h --- ./linux-3.4.108/arch/arm/mach-imapx200/include/mach/imapx_base_reg.h 2015-09-09 12:17:52.498020874 +0300 +++ ../linux-3.4.108/arch/arm/mach-imapx200/include/mach/imapx_base_reg.h 2015-09-08 17:11:45.778035706 +0300 @@ -15,13 +15,23 @@ #define IMAPX200_SDRAM_PA (0x40000000) /************************Virtual address for peripheral*************************/ -#define IMAP_VA_SYSMGR IMAP_ADDR(0x00200000) -#define IMAP_VA_IRQ IMAP_ADDR(0x00000000) -#define IMAP_VA_TIMER IMAP_ADDR(0x00300000) -#define IMAP_VA_WATCHDOG IMAP_ADDR(0x00600000) -#define IMAP_VA_GPIO IMAP_ADDR(0x00400000) -#define IMAP_VA_NAND IMAP_ADDR(0x00500000) -#define IMAP_VA_FB IMAP_ADDR(0x00700000) +#if defined(IMAP_USE_MACRO_CONSTANTS) || defined(__ASSEMBLY__) +# define IMAP_VA_SYSMGR IMAP_ADDR(0x00200000) +# define IMAP_VA_IRQ IMAP_ADDR(0x00000000) +# define IMAP_VA_TIMER IMAP_ADDR(0x00300000) +# define IMAP_VA_WATCHDOG IMAP_ADDR(0x00600000) +# define IMAP_VA_GPIO IMAP_ADDR(0x00400000) +# define IMAP_VA_NAND IMAP_ADDR(0x00500000) +# define IMAP_VA_FB IMAP_ADDR(0x00700000) +#else +extern const void __iomem __force * const IMAP_VA_SYSMGR; +extern const void __iomem __force * const IMAP_VA_IRQ; +extern const void __iomem __force * const IMAP_VA_TIMER; +extern const void __iomem __force * const IMAP_VA_WATCHDOG; +extern const void __iomem __force * const IMAP_VA_GPIO; +extern const void __iomem __force * const IMAP_VA_NAND; +extern const void __iomem __force * const IMAP_VA_FB; +#endif /* defined(IMAP_USE_MACRO_CONSTANTS) || defined(__ASSEMBLY__) */ #define PERIPHERAL_BASE_ADDR_PA (0x20C00000) diff -ru ./linux-3.4.108/arch/arm/plat-imap/cpu.c ../linux-3.4.108/arch/arm/plat-imap/cpu.c --- ./linux-3.4.108/arch/arm/plat-imap/cpu.c 2015-09-09 12:17:52.607021038 +0300 +++ ../linux-3.4.108/arch/arm/plat-imap/cpu.c 2015-09-08 17:18:30.646035384 +0300 @@ -1,3 +1,5 @@ +#define IMAP_USE_MACRO_CONSTANTS + /******************************************************************************** ** linux-2.6.28.5/arch/arm/plat-imap/cpu.c ** diff -ru ./linux-3.4.108/arch/arm/plat-imap/gpio.c ../linux-3.4.108/arch/arm/plat-imap/gpio.c --- ./linux-3.4.108/arch/arm/plat-imap/gpio.c 2015-09-09 12:17:52.614020935 +0300 +++ ../linux-3.4.108/arch/arm/plat-imap/gpio.c 2015-09-08 17:18:38.566035206 +0300 @@ -1,3 +1,5 @@ +#define IMAP_USE_MACRO_CONSTANTS + /* arch/arm/plat-imapx200/gpiolib.c * * Copyright 2008 Openmoko, Inc. diff -ru ./linux-3.4.108/arch/arm/plat-imap/pm_imapx200.c ../linux-3.4.108/arch/arm/plat-imap/pm_imapx200.c --- ./linux-3.4.108/arch/arm/plat-imap/pm_imapx200.c 2015-09-09 12:17:52.631020886 +0300 +++ ../linux-3.4.108/arch/arm/plat-imap/pm_imapx200.c 2015-09-08 17:18:52.102036874 +0300 @@ -1,3 +1,5 @@ +#define IMAP_USE_MACRO_CONSTANTS + #include <linux/init.h> #include <linux/suspend.h> #include <linux/serial_core.h> diff -ru ./linux-3.4.108/drivers/video/infotm/imapfb.c ../linux-3.4.108/drivers/video/infotm/imapfb.c --- ./linux-3.4.108/drivers/video/infotm/imapfb.c 2015-09-09 12:17:53.350020920 +0300 +++ ../linux-3.4.108/drivers/video/infotm/imapfb.c 2015-09-08 17:34:34.814042727 +0300 @@ -1,3 +1,5 @@ +#define IMAP_USE_MACRO_CONSTANTS + /***************************************************************************** ** drivers/video/infotm/imapfb.c ** diff -ru --new-file ./linux-3.4.108/arch/arm/mach-imapx200/constants.c ../linux-3.4.108/arch/arm/mach-imapx200/constants.c --- ./linux-3.4.108/arch/arm/mach-imapx200/constants.c 1970-01-01 03:00:00.000000000 +0300 +++ ../linux-3.4.108/arch/arm/mach-imapx200/constants.c 2015-09-09 14:56:53.513487879 +0300 @@ -0,0 +1,11 @@ +#include <linux/compiler.h> + +#include <mach/imapx_base_reg.h> + +const void __iomem __force * const IMAP_VA_SYSMGR = IMAP_ADDR(0x00200000); +const void __iomem __force * const IMAP_VA_IRQ = IMAP_ADDR(0x00000000); +const void __iomem __force * const IMAP_VA_TIMER = IMAP_ADDR(0x00300000); +const void __iomem __force * const IMAP_VA_WATCHDOG = IMAP_ADDR(0x00600000); +const void __iomem __force * const IMAP_VA_GPIO = IMAP_ADDR(0x00400000); +const void __iomem __force * const IMAP_VA_NAND = IMAP_ADDR(0x00500000); +const void __iomem __force * const IMAP_VA_FB = IMAP_ADDR(0x00700000);
æž¬å® ^
2ã€ã®ææšã枬å®ããããšã決å®ãããŸããã
- vmlinuxã«ãŒãã«ãã¡ã€ã«ãµã€ãºã
- OSã®åäœäžã«é¢æ°ã®ãµã€ãºãçŽæ¥ã«ãŠã³ãããŸãã
imapãµãã¯ãŒããå«ããã¹ãŠã®é¢æ°ã®ãµã€ãºãã«ãŠã³ãããã¹ã¯ãªããã¯ãã¡ã [19] ã
çµæã¯æ¬¡ã®ãšããã§ãã
èŠãã
# diff -ru 1.log 2.log
--- 1.log 2015-09-11 16:57:28.430158628 +0300 +++ 2.log 2015-09-11 16:57:20.627161803 +0300 @@ -1,4 +1,4 @@ -Data Size: 17844272 Bytes = 17426.05 kB = 17.02 MB +Data Size: 17843856 Bytes = 17425.64 kB = 17.02 MB Load Address: 0x40008000 Entry Point: 0x40008000 --- 22012015-rom/sizes.txt 2015-01-28 15:25:51.107945315 +0300 +++ 28012015-rom/sizes.txt 2015-01-28 15:15:48.052949785 +0300 @@ -1,25 +1,25 @@ -imapx200_timer_mask - 44 -imapx200_timer_unmask - 52 -imapx200_timer_ack - 44 +imapx200_timer_mask - 52 +imapx200_timer_unmask - 60 +imapx200_timer_ack - 52 imapx200_irq_add - 24 imapx200_irq_init - 32 imapx200_irq_wake - 44 -imapx200_irq_unmask - 136 -imapx200_irq_mask - 132 -imapx200_irq_ack - 120 +imapx200_irq_unmask - 172 +imapx200_irq_mask - 160 +imapx200_irq_ack - 152 imap_clk_enable - 60 imap_clkcon_enable - 76 -imapx200_gettimeoffset - 64 -imapx200_timer_setup - 164 -imapx200_timer_interrupt - 64 +imapx200_gettimeoffset - 68 +imapx200_timer_setup - 168 +imapx200_timer_interrupt - 76 imap_pwm_suspend - 188 imap_pwm_resume - 184 imap_pwm_start - 164 imap_timer_setup - 404 imap_default_idle - 20 -imapx_poweroff - 56 -imapx_reset - 64 -imapx200_idle - 52 +imapx_poweroff - 88 +imapx_reset - 68 +imapx200_idle - 48 imap_set_board - 112 imapx200_gpio_setpull_updown - 56 imapx200_gpio_getpull_updown - 36 @@ -48,7 +48,7 @@ imapx200_pm_prepare - 24 imapx200_pm_finish - 20 imapx200_pm_do_save - 88 -imapx200_pm_enter - 436 +imapx200_pm_enter - 500 imapx200_pm_configure_extint - 20 imapx200_pm_prepare - 24 imapx200_pm_init - 80 @@ -86,8 +86,8 @@ imapfb_resume - 196 imapfb_suspend - 204 imapfb_backlight_power_supply - 20 -imapfb_set_clk - 44 -imapfb_set_gpio - 88 +imapfb_set_clk - 52 +imapfb_set_gpio - 96 imapfb_set_brightness - 36 imapfb_lcd_power_supply - 32 con_get_unimap - 360 @@ -153,7 +153,7 @@ imap_nand_irq - 92 ehci_imapx200_drv_remove - 80 ehci_imapx200_init - 1148 -ehci_imapx200_drv_probe - 552 +ehci_imapx200_drv_probe - 556 ohci_hcd_imapx200_drv_remove - 80 ohci_imapx200_start - 100 ohci_hcd_imapx200_drv_probe - 512 @@ -196,22 +196,22 @@ imapx200_i2c_probe - 824 imapx200_i2c_irq - 920 imapx200_decode_poll - 184 -imapx200_decode_suspend - 132 +imapx200_decode_suspend - 44 imapx200_decode_resume - 68 -imapx200_decode_release - 192 +imapx200_decode_release - 104 imapx200_decode_open - 124 imapx200_decode_remove - 208 imapx200_decode_ioctl - 384 -imapx200_decode_probe - 908 +imapx200_decode_probe - 816 imapx200_decode_irq_handle - 264 imapx200_encode_poll - 84 -imapx200_encode_suspend - 116 +imapx200_encode_suspend - 28 imapx200_encode_ioctl - 348 imapx200_encode_resume - 68 -imapx200_encode_release - 188 +imapx200_encode_release - 100 imapx200_encode_open - 120 imapx200_encode_remove - 232 -imapx200_encode_probe - 1080 +imapx200_encode_probe - 988 imapx200_encode_irq_handle - 136 sdhci_imap_set_clk_src - 52 sdhci_imap_resume - 36 @@ -220,7 +220,7 @@ sdhci_imap_get_timeout_clk - 40 imapfb_probe - 2952 imapfb_init - 28 -sdhci_imap_probe - 604 +sdhci_imap_probe - 608 sdhci_imap_remove - 20 name_imapx200 - 12 imapfb_a1rgb232_8 - 48 @@ -342,8 +342,8 @@ __kstrtab_imap_get_reservemem_paddr - 26 __kstrtab_con_copy_unimap - 16 __kstrtab_con_set_default_unimap - 23 -imapx200_init_clocks - 1120 -imapx200_timer_init - 120 +imapx200_init_clocks - 1104 +imapx200_timer_init - 124 imapx200_register_device - 56 imap_init_pwm - 308 imapx200_fixup - 36 @@ -542,7 +542,7 @@ imapx200_i2c_driver - 116 imapx200_i2c_driver - 116 imapx200_decode_driver - 80 -imapx200_decode_fops - 144 +imapx200_decode_fops - 148 imapx200_encode_driver - 80 imapx200_encode_fops - 180 sdhci_imap_driver - 80
ã³ã¢å šäœã®ãµã€ãºã¯416æžå°ããŸããããã²ã€ã³ã¯æåŸ ãããã®ã§ã¯ãããŸããã§ãããäžéšã®é¢æ°ã¯éã¿ãè¿œå ããŸããã
ãããããããçµéšè±å¯ãªèªè ããã®çç±ãç¥ã£ãŠãããããããŸãããããã®æç¹ã§ã¯ããã¯ããã»ã©æ確ã§ã¯ãããŸããã§ããã ã¢ã»ã³ãã©ãŒé¢æ°imapx200_timer_ackã®ãœãŒã¹ã³ãŒããæ€èšããŠãã ãããå€æŽåŸããµã€ãºã8ãã€ãå¢å ããŸããã
èŠãã
--- 0xc0019c40-t-imapx200_timer_ack-2.listing 2015-11-18 22:12:24.196113878 +0300 +++ 0xc0019c50-imapx200_timer_ack-2.listing 2015-11-18 22:12:24.297113880 +0300 @@ -9,10 +9,12 @@ XXXXXXXX: e92dd800 push {fp, ip, lr, pc} XXXXXXXX: e24cb004 sub fp, ip, #4 ; 0x4 XXXXXXXX: e1a00000 nop (mov r0,r0) +c0019c60: e59f2018 ldr r2, [pc, #24] ; c0019c80 <_binary_0xc0019c50_imapx200_timer_ack_start+0x30> XXXXXXXX: e590Y000 ldr rY, [r0] XXXXXXXX: e3a0X001 mov rX, #1 ; 0x1 -c0019c58: e3a0120f mov r1, #-268435456 ; 0xf0000000 +c0019c6c: e5921000 ldr r1, [r2] XXXXXXXX: e1a0XX1Y lsl rX, rX, rY XXXXXXXX: e581X010 str rX, [r1, #16] XXXXXXXX: e581X000 str rX, [r1] XXXXXXXX: e89da800 ldm sp, {fp, sp, pc} +c0019c80: c04e858c subgt r8, lr, ip, lsl #11
æåã«ç®ã«çãŸãã®ã¯ãããŒã¹ã¢ãã¬ã¹èªäœãéåžžã«æåããŠãããããã¬ãžã¹ã¿ã«æžã蟌ããšmovã³ãã³ãã®4ãã€ãã«åãŸãããšã§ãã
c0019c58: e3a0120f mov r1, #-268435456 ; 0xf0000000
2çªç®ïŒå€æŽåŸãã³ã³ãã€ã©ãŒã¯é¢æ°ãšãããŒã°ã®åŸã«æ°ããå®æ°ã®ã¢ãã¬ã¹ãè¿œå ããå¿ èŠããããŸããã ãã®å€ã¯ããŸã䟿å©ã§ã¯ãããŸãã-4ãã€ãã®æéã
ãããŠæåŸïŒã¡ã¢ãªããçŽæ¥å€ãèªã¿åãããšã¯äžå¯èœãªã®ã§ãæåã«å®æ°ã®ã¢ãã¬ã¹ãã¬ãžã¹ã¿ã«æžã蟌ã¿ãŸãïŒ
c0019c60: e59f2018 ldr r2, [pc, #24] ; c0019c80
-4ãã€ã2ã
çµè« ^
客芳çãªçµè«ã¯ããã¯ãã®åœ¢åŒãšconstå€æ°ã®äœ¿çšã®äž¡æ¹ã§å®æ°ãå®çŸ©ããçµæã«ã€ããŠç¥ãå¿ èŠããããšæããŸãã
å人çã«ã¯ãã³ã³ãã€ã©ãŒïŒãªã³ã«ãŒãšçµã¿åãããŠïŒããextern constã§åé¡ãªãå®æ°ã®å€ãåã蟌ã決å®ãç¬èªã«è¡ãããšã倢èŠãŠããŸãã
ãæž èŽããããšãããããŸããïŒ
ãœãŒã¹ã®ãªã¹ã ^
- ^ 1 2 3 ååšãèšç®ãã
- ^ ããäžåºŠãäžæã®å®æ°ã«ã€ããŠ
- ^ Zenithink ZT-180ã¿ãã¬ããPCã®äœ¿çšå±¥æŽãšè³Œå ¥çµéš
- ^ Zenithink Zt-180 10 "ã¿ãã¬ããã¬ãã¥ãŒ
- ^ããŒãžã¯å©çšã§ããªããªããŸãããhabrahabr.ru/ blogs / iTablet / 110714ã®ããŸããŸãªWebã¢ãŒã«ã€ããWebã§æ€çŽ¢ããŠãã ãã
- ^ãã®ããŒãžã¯ããå©çšã§ããŸãããwww.good-review.ru/ pandawill / 2011/02/21 / obzor-kitayskogo-plansheta-zenithink-zt-180-10.htmlã®ããŸããŸãªWebã¢ãŒã«ã€ããåç §ããŠãã ããã
- éã®åé 眮ïŒAndroidã¿ãã¬ããäžã®Linux
- ^ å éšã®åç
- ^ Zimageã¢ã³ããã¯ããã³ããã¯ããŒã«
- ^ ãfirmware2ãããã³ãfirmware_discoveryãã®éã³ã³ãã€ã«
- ^ å解ïŒæ¥œãããšãªãŒããŒã¯ããã¯ã®ããã®Androidã«ãŒãã«ã®ç Žå£
- ^ ã¿ãã¬ããå°çšã®forum.china-iphone.ruã®ãããã¯
- ^ ãªãŒãã³ãœãŒã¹ãããžã§ã¯ã
- ^ github.com/atpboy444/ZT-180
- ^ github.com/dandel/linux-2.6.32.y
- ^ SlackwareARM-14.1
- ^ https://github.com/djwillis/meta-raspberrypi/issues/38
- ^ https://lkml.org/lkml/2012/7/6/260
- ^ 1 2 3 4 github.com/gshep/flytouch2-helper-scripts
- ^ã¹ã³ãããã€ã€ãŒãºã C ++ã®å¹æçãªäœ¿çšã 55ããã°ã©ã ã®æ§é ãšã³ãŒããæ¹åããããã®è¯ããã³ã
- ^ ã°ããŒãã«ã®åæåé åº