I'll try to retest my latest commit tomorrow with my rpi B and rpi B+. 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.
Thanks for the instructions of memory table. I'll try that tomorrow. > 在 2015年7月21日,00:52,Pavel Pisa <p...@cmp.felk.cvut.cz> 写道: > > Hello Qiao Yang, > >> On Monday 20 of July 2015 20:50:32 QIAO YANG wrote: >> So it has got the right pointer for frame buffer. >> >> Please set the macros >> >> BCM2835_FBMEM_BASE to 0x1C006000 >> and BCM2835_FBMEM_SIZE to 0x500000 >> according to your log. > > I have got to testing at home where I have other RPi board > and have no luck till. The memory setup is different there so I tried > to recompiled for that one. I will rerun test at the university > on the previous board again on Wednesday. If you have some > enhancements, commit them to your RTEMS git, please. > > As for memory map adaptation, RTEMS does not include infrastructure > for memory management setup changes at runtime but the before > bsp_memory_management_initialize() is called then CPU runs in 1:1 > mapping where physical and virtual addresses match. The main > reason to setup and enable MMU on ARM is that without MMU > cache cannot be enabled so execution is slow. Even instruction > cache can be enabled without MMU enable on some ARM models. > So the system is mostly/completely operational before MMU > enable. > > arm_cp15_start_mmu_config_table table is declared as const > but if it is not marked that way and compiler error is prevented > then it can be manipulated before bsp_memory_management_initialize(); > in bsp_start_hook_1() is called > > rtems/c/src/lib/libbsp/arm/raspberrypi/startup/bspstarthooks.c > bsp_start_hook_1(void) > > So it should be possible to parse ATAGs or even access VideoCore > before MMU is configured. > > The MMU config requires arm_cp15_start_mmu_config_table to be global > variable. There is other solution even if problem with > const does not allows simple modification of the table > (but brute cast in the function adding video region would work either). > > It is most probable possible to skip to call > bsp_memory_management_initialize() from the hook > and use local variant of that code which would be RPi BSP > specific > > rtems-yangqiao/c/src/lib/libbsp/arm/shared/mminit.c > bsp_memory_management_initialize(); > > #define ARM_CP15_TEXT_SECTION BSP_START_TEXT_SECTION > > #include <bsp/start.h> > #include <bsp/arm-cp15-start.h> > #include <bsp/linker-symbols.h> > #include <bsp/mm.h> > > BSP_START_TEXT_SECTION void bsp_memory_management_initialize(void) > { > uint32_t ctrl = arm_cp15_get_control(); > > ctrl |= ARM_CP15_CTRL_AFE | ARM_CP15_CTRL_S | ARM_CP15_CTRL_XP; > > arm_cp15_start_setup_translation_table_and_enable_mmu_and_cache( > ctrl, > (uint32_t *) bsp_translation_table_base, > ARM_MMU_DEFAULT_CLIENT_DOMAIN, > &arm_cp15_start_mmu_config_table[0], > arm_cp15_start_mmu_config_table_size > ); > } > > So it is quite short sequence and even highly dynamic table can be used. > > The mechanism to obtain installed/board provided memory size > is required even to setup correctly size of memory and heap > available for RTEMS system workspace and user application. > > So this should be solved (at least in long term horizon) some > more generic/autoconfigured way. > > Best wishes, > > Pavel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel