LinuxÄں˼°ARMµÄÄÚ´æ¹ÜÀí
Ò»¸öÈ˲ªÒ»´Î²»ÄÑ£¬ÄѵÄÊDzªÒ»±²×Ó……
×î½ü·ÖÐĵÄʺܶ࣬²ªµÃÔ½À´Ô½ÉÙÁË£¡
´ò¿ªmmuÊÇÒ»¼þÉñÊ¥µÄ¹¤×÷£¬ÐèÒª×Ðϸ¡¢ÔÙ×Ðϸ……
´Ó__v7_setupº¯Êý·µ»ØÀ´£¬½øÈëµ½__enable_mmu¹ý³Ì£¬×öÆð·ÉǰµÄ×îºóÈ·ÈÏ£º
__enable_mmu:
#ifdef CONFIG_ALIGNMENT_TRAP
orr r0, r0, #CR_A
#else
bic r0, r0, #CR_A
#endif
¸ù¾ÝÅäÖÃÑ¡Ï¾ö¶¨ÊÇ·ñ´ò¿ªÊý¾Ý¶ÔÆë¼ì²é£¬Ò»°ãÊÇÒª´ò¿ªµÄ£»
#ifdef CONFIG_CPU_DCACHE_DISABLE
bic r0, r0, #CR_C
#endif
¸ù¾ÝÅäÖÃÑ¡Ï¾ö¶¨ÊÇ·ñ¹Ø±Õ¿ªÊý¾Ý»º³åÇø£¬Ò»°ãÊDz»ÐèÒª¹Ø±ÕµÄ£»
#ifdef CONFIG_CPU_BPREDICT_DISABLE
bic r0, r0, #CR_Z
#endif
¸ù¾ÝÅäÖÃÑ¡Ï¾ö¶¨ÊÇ·ñÒª¹Ø±Õ·ÖÖ§Ô¤²â¹¦ÄÜ£¬Ò»°ãÊDz»ÐèÒª¹Ø±ÕµÄ£»
#ifdef CONFIG_CPU_ICACHE_DISABLE
bic r0, r0, #CR_I
#endif
¸ù¾ÝÅäÖÃÑ¡Ï¾ö¶¨ÊÇ·ñ¹Ø±Õ¿ªÖ¸Á³åÇø£¬Ò»°ãÊDz»ÐèÒª¹Ø±ÕµÄ£»
mov r5, #(domain_val(DOMAIN_USER, DOMAIN_MANAGER) | \
domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \
domain_val(DOMAIN_TABLE, DOMAIN_MANAGER) | \
domain_val(DOMAIN_IO, DOMAIN_CLIENT))
½áºÏÊý¾ÝÊֲᣬ´Ë¶ÎÊǽ«D0¡¢D1Á½¸öÓò£¬D1¶ÔÓ¦ÓÚUSERÓò£¬D0¶ÔÓ¦ÓÚKERNELºÍTABLEÓò£¬ÅäÖÃΪ¹ÜÀíģʽ£¬¶ÔÕâÁ½¸öÓòµÄ·ÃÎʺÍÖ´Ðв»ÊÜTLBÖÐÏàÓ¦±ê־λӰÏ죬D2Óò£¬¶ÔÓ¦ÓÚIOÓò£¬ÅäÖÃΪ¿Í»§Ä£Ê½£¬¶Ô´ËÓòµÄ·ÃÎÊÊÜTLBÖÐÏàÓ¦±ê־λµÄ¼ì²é£»
mcr p15, 0, r5, c3, c0, 0 @ load domain access register
дÈëÓò·ÃÎÊ¿ØÖƼĴæÆ÷£¬ÆäʵºÍ__v7_setupº¯ÊýÖÐдÈëµÄÖµÏàͬ£»
mcr p15, 0, r4, c2, c0, 0 @ load page table pointer
__v7_setupº¯ÊýÖÐÒ²ÒѾд¹ýÕâ¸ö¼Ä´æÆ÷ÁË£»
b __turn_mmu_on
__turn_mmu_on¾ÍÔÚºóÃæ½ô¸ú×Å£¬²»Ã÷°×ΪºÎ»¹Òªbһϣ»
ENDPROC(__enable_mmu)
ÔÙ¿´¿´½ô½Ó×ŵÄ__turn_mmu_onº¯Êý£º
/*
* Enable the MMU. This completely changes the structure of the visible
* memory space. You will not be able to trace execution through this.
* If you have an enquiry about this, *please* check the linux-arm-kernel
* mailing list archives BEFORE sending another post to the list.
*
* r0 = cp#15 control register
* r13 = *virtual* address to jump to upon co
Ïà¹ØÎĵµ£º
1¡¢°²×°»ù±¾ÏµÍ³
ÕâÀﰲװʹÓõÄÊÇUbuntu 7.04 µÄ Alternate CD¡£Ê¹Óà Alternate CD Òýµ¼Æô¶¯£¬È»ºóÑ¡Ôñ “°²×°ÃüÁîÐÐϵͳ£¨Install Command Line£©” ½øÐÐ×îС»¯°²×°£¬ÔÚÕâÒ»²½£¬Òª×¢Ò⣬һ¶¨²»ÒªÑ¡ÔñÖÐÎÄÓïÑÔ»·¾³£¬·ñÔòÔÚÖÕ¶Ë´°¿Úϵĸ÷ÖÖÌáʾ£¬Óкܶ඼ÊÇÖÐÎĵġ£ÔÚûÓÐ×°ÔØÍê³ÉX Window֮ǰ£¬ÄãÖ»ÄÜ¿´µ½Ò»¶Ñ ......
1. ´ò¿ª´®¿Ú
¡¡¡¡ÓëÆäËûµÄ¹ØÓÚÉ豸±à³ÌµÄ·½·¨Ò»Ñù£¬ÔÚLinuxÏ£¬²Ù×÷¡¢¿ØÖÆ´®¿ÚÒ²ÊÇͨ¹ý²Ù×÷ÆðÉ豸Îļþ½øÐеġ£ÔÚLinuxÏ£¬´®¿ÚµÄÉ豸ÎļþÊÇ/dev/ttyS0»ò/dev/ttyS1µÈ¡£Òò´ËÒª¶Áд´®¿Ú£¬ÎÒÃÇÊ×ÏÈÒª´ò¿ª´®¿Ú£º
¡¡
¡¡¡¡char *dev = "/dev/ttyS0"£» //´®¿Ú1
¡¡
¡¡¡¡int fd = open£¨ dev£¬ O_RDWR £©£»
¡¡
¡¡¡¡//| O_NOCT ......
ת×Ô£ºhttp://blog.chinaunix.net/u/7547/showart_122619.html
1.open device:
video_dev = open("\dev\video0",O_RDWR));
2.get the information of the video device
struct video_capability video_cap;
memset(&video_cap,0,sizeof(vid ......
ʵģʽΪʲô²»°²È«£¿
ÔÚʵģʽÖУ¬cpu¸ù¾ÝÖ¸ÁîÀàÐ;ö¶¨²ÉÓÃDS¡¢CS¡¢ES»¹ÊÇSS£¬´Ó¶Î¼Ä´æÆ÷ÖÐÈ¡³ö»ùÖµ£¬ÔÙ´ÓÖ¸ÁîÖÐÈ¡³öÆ«ÒÆÖµ¡£ÕâÀï´æÔÚÁ½¸öÎÊÌ⣺
1. ¶Î¼Ä´æÆ÷µÄÖµ¿ÉÒÔ±»ÆÕͨȨÏÞµÄÖ¸Áî·ÃÎÊ£¬Õâ¾ÍÒâζ×ÅÓû§½ø³Ì¿ÉÒÔÐ޸ĶμĴæÆ÷µÄÖµ¡£
2. Æ«ÒÆÖµÎª16룬¿ÉÒÔ·ÃÎÊ´Ó»ùµØÖ·¿ªÊ¼µÄ64KµÄÁ¬Ðø¿Õ¼ä¡£
ͨ¹ýÕâÁ½¸öÖµ£¬¿ÉÒÔ·ÃÎÊ ......
LinuxϵͳÐÔÄÜÖ¸±ê½éÉÜ
ת×ÔAndrew(http://andrew913.javaeye.com/blog/431259)
ÔÚ
ÎÒÃǽéÉÜLinuxϵͳµÄ¸÷ÖÖµ÷ÓŲÎÊýºÍÐÔÄܼà²â¹¤¾ß֮ǰ£¬ÐèÒªÏÈÌÖÂÛһЩ¹ØÓÚÐÔÄܵ÷ÓŵIJÎÊý¡£ÒòΪLinuxÊÇÒ»¸ö¿ªÔ´²Ù×÷ϵͳ£¬ËùÒÔÓÖ´óÁ¿¿ÉÓõÄÐÔÄÜ
¼à²â¹¤¾ß¡£¶ÔÕâЩ¹¤¾ßµÄÑ¡ÔñÈ¡¾öÓÚÄãµÄ¸öÈËϲºÃºÍ¶ÔÊý¾Ýϸ½ÚµÄÒªÇó¡£Ë ......