RPi Graphic testing

桥 杨 yangqiao0505 at me.com
Mon Jul 20 23:13:38 UTC 2015


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 <pisa at 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



More information about the devel mailing list