<html><head><meta http-equiv="Content-Type" content="text/html charset=gb2312"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">When I updated to the latest firmware start.elf , the graphic doesn’t show anymore. I haven’t yet found out what has been changed in the latest firmware. I’ve uploaded my firmware. I’ve retested my latest commit, it worked with hello, ticker and rbi samples.</div><div class=""><br class=""></div><div class=""><a href="https://www.dropbox.com/sh/95bu6skofkmrlvc/AABXjwvvFhQScJdo_rwj12V6a?dl=0" class="">https://www.dropbox.com/sh/95bu6skofkmrlvc/AABXjwvvFhQScJdo_rwj12V6a?dl=0</a></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 21, 2015, at 1:13 AM, 桥 杨 <<a href="mailto:yangqiao0505@me.com" class="">yangqiao0505@me.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">I'll try to retest my latest commit tomorrow with my rpi B and rpi B+.<br class=""><br class="">I disn't see any errors from the log and I havn't yet any idea why It didn't work. Keep in touch when you do tests. I'm always reachable.<br class=""><br class="">Thanks for the instructions of memory table. I'll try that tomorrow.<br class=""><br class=""><blockquote type="cite" class="">在 2015年7月21日,00:52,Pavel Pisa <<a href="mailto:pisa@cmp.felk.cvut.cz" class="">pisa@cmp.felk.cvut.cz</a>> 写道:<br class=""><br class="">Hello Qiao Yang,<br class=""><br class=""><blockquote type="cite" class="">On Monday 20 of July 2015 20:50:32 QIAO YANG wrote:<br class="">So it has got the right pointer for frame buffer.<br class=""><br class="">Please set the macros<br class=""><br class="">BCM2835_FBMEM_BASE to 0x1C006000<br class="">and BCM2835_FBMEM_SIZE to 0x500000<br class="">according to your log.<br class=""></blockquote><br class="">I have got to testing at home where I have other RPi board<br class="">and have no luck till. The memory setup is different there so I tried<br class="">to recompiled for that one. I will rerun test at the university<br class="">on the previous board again on Wednesday. If you have some<br class="">enhancements, commit them to your RTEMS git, please.<br class=""><br class="">As for memory map adaptation, RTEMS does not include infrastructure<br class="">for memory management setup changes at runtime but the before<br class="">bsp_memory_management_initialize() is called then CPU runs in 1:1<br class="">mapping where physical and virtual addresses match. The main<br class="">reason to setup and enable MMU on ARM is that without MMU<br class="">cache cannot be enabled so execution is slow. Even instruction<br class="">cache can be enabled without MMU enable on some ARM models.<br class="">So the system is mostly/completely operational before MMU<br class="">enable.<br class=""><br class="">arm_cp15_start_mmu_config_table table is declared as const<br class="">but if it is not marked that way and compiler error is prevented<br class="">then it can be manipulated before bsp_memory_management_initialize();<br class="">in bsp_start_hook_1() is called<br class=""><br class="">rtems/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c <br class=""> bsp_start_hook_1(void)<br class=""><br class="">So it should be possible to parse ATAGs or even access VideoCore<br class="">before MMU is configured.<br class=""><br class="">The MMU config requires arm_cp15_start_mmu_config_table to be global<br class="">variable. There is other solution even if problem with<br class="">const does not allows simple modification of the table<br class="">(but brute cast in the function adding video region would work either).<br class=""><br class="">It is most probable possible to skip to call <br class="">bsp_memory_management_initialize() from the hook<br class="">and use local variant of that code which would be RPi BSP<br class="">specific<br class=""><br class="">rtems-yangqiao/c/src/lib/libbsp/arm/shared/mminit.c<br class=""> bsp_memory_management_initialize();<br class=""><br class="">#define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION<br class=""><br class="">#include <bsp/start.h><br class="">#include <bsp/arm-cp15-start.h><br class="">#include <bsp/linker-symbols.h><br class="">#include <bsp/mm.h><br class=""><br class="">BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void)<br class="">{<br class=""> uint32_t ctrl = arm_cp15_get_control();<br class=""><br class=""> ctrl |= ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP;<br class=""><br class=""> arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache(<br class=""> ctrl,<br class=""> (uint32_t *) bsp_translation_table_base,<br class=""> ARM_MMU_DEFAULT_CLIENT_DOMAIN,<br class=""> &arm_cp15_start_mmu_config_table[0],<br class=""> arm_cp15_start_mmu_config_table_size<br class=""> );<br class="">}<br class=""><br class="">So it is quite short sequence and even highly dynamic table can be used.<br class=""><br class="">The mechanism to obtain installed/board provided memory size<br class="">is required even to setup correctly size of memory and heap<br class="">available for RTEMS system workspace and user application.<br class=""><br class="">So this should be solved (at least in long term horizon) some<br class="">more generic/autoconfigured way.<br class=""><br class="">Best wishes,<br class=""><br class=""> Pavel<br class=""></blockquote>_______________________________________________<br class="">devel mailing list<br class=""><a href="mailto:devel@rtems.org" class="">devel@rtems.org</a><br class="">http://lists.rtems.org/mailman/listinfo/devel</div></blockquote></div><br class=""></div></body></html>