On 2013-10-14 18:16, Hesham Moustafa wrote:
On Mon, Oct 14, 2013 at 6:03 PM, Gedare Bloom <[email protected]
<mailto:[email protected]>> wrote:
On Mon, Oct 14, 2013 at 11:54 AM, Hesham Moustafa
<[email protected] <mailto:[email protected]>> wrote:
>
>
>
> On Mon, Oct 14, 2013 at 4:02 PM, Sebastian Huber
> <[email protected]
<mailto:[email protected]>> wrote:
>>
>> On 2013-10-14 15:34, Hesham AL-Matary wrote:
>>>
>>> diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
>>> b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
>>> index 5436a76..2b748b2 100644
>>> --- a/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
>>> +++ b/c/src/lib/libbsp/arm/raspberrypi/startup/mm_config_table.c
>>> @@ -42,7 +42,7 @@ bsp_mm_config_table[] = {
>>> }, {
>>> .begin = (uint32_t) bsp_section_text_begin,
>>> .end = (uint32_t) bsp_section_text_end,
>>> - .flags = ARMV7_MMU_CODE_CACHED
>>> + .flags = ARMV7_MMU_READ_WRITE
>>
>>
>> What is the problem with the cache? Did the cache previously work?
>
> There is a problem with applying a Read-Only permissions in general to
this
> area for RaspberryPi BSP.
Any idea why? Letting the text region be read-write is overly
permissive, as RTEMS does not generally use self-modifying code.
Not sure about the reason, I had to test (i.e., change attributes) every entry
in
the table and finally found that this section causes the problem. I could not
use
other debugging methods because the BSP is new and lacks a driver to remotely
debug, and I could not also use printf as it's a startup code. Maybe this
section
overlaps other section (as its minimum size is 1 MB and it's aligned)
which is written later (e.g., vector table area). ticker.exe only works with
this
modification.
You can add a gap between the read-only and read-write sections with the
bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ?
bsp_section_rwbarrier_align : 1M;
symbol which may be provided by the BSP specific linker command file.
You can also use Qemu to debug this problem.
>>
>>
>>
>>> }, {
>>> .begin = (uint32_t) bsp_section_rodata_begin,
>>> .end = (uint32_t) bsp_section_rodata_end,
>>> @@ -63,8 +63,12 @@ bsp_mm_config_table[] = {
>>> .begin = (uint32_t) bsp_section_stack_begin,
>>> .end = (uint32_t) bsp_section_stack_end,
>>> .flags = MMU_DATA_READ_WRITE
>>> + }, {
>>> + .begin = 0x20000000,
>>> + .end = 0x20FFFFFF,
>>> + .flags = ARMV7_MMU_DATA_READ_WRITE
>>
>>
>> What is this for an area?
>
> It's for Raspberry GPIO pins and other registers (defined at
> raspbberrypi.h).
Is this the correct setting for devices?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : [email protected]
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
[email protected]
http://www.rtems.org/mailman/listinfo/rtems-devel