Dear Adam,
How are you doing now ? I am fresh member for L4re . Now I have GPIO Mapping problems happened when run the L4re in Arm 11 (6410 ).
.devs ==> Res.mmio(0x7f008100, 0x7f00813f); .lcd.c ==>l4io_request_iomem(0x7f008100, 0x03f, L4IO_MEM_NONCACHED, &lcd_gpio_virt_base);
when "l4_mem_write(lcd_gpio_virt_base+0x00,L4_MEM_WIDTH_4BYTE,0xaaaaaaaa); download in real-hw board : the core will died as it :
Ned: loading file: 'rom/arm-rv-lcd.cfg'
hello | Hello World! IO | Dev_factory: register factory for N2Hw6DeviceE IO | GTF: register factory for 7Pci_dev IO | GTF: register factory for N2Hw12Msi_resourceE IO | Dev_factory: register factory for N2Hw11Gpio_deviceE IO | Io service IO | Ready. Waiting for request. fbdrv | Using LCD driver: S3C6410 fbdrv | lcd_control_virt_base is 0x3000 fbdrv | lcd_gpio_virt_base is 0x4000 fbdrv | Video memory is at virtual 0x5000 (size: 0x3fc00 Bytes) fbdrv | Physical video memory is at 0x50394000 ==>core died
after delete it and only use l4_mem_read , value always is
IO | Ready. Waiting for request.
fbdrv | Using LCD driver: S3C6410 fbdrv | lcd_control_virt_base is 0x3000 fbdrv | lcd_gpio_virt_base is 0x4000 fbdrv | Video memory is at virtual 0x5000 (size: 0x3fc00 Bytes) fbdrv | Physical video memory is at 0x50395000 fbdrv | 0 value is 0x220022 ==> core run is ok.
In the range of the GPIO ,whatever I defined , the lcd_gpio_virt_base + offset (value 0) is always 0x220022 ,can't be written . the lcd_gpio_virt_base + offset (value 0x04) is always 0x23 ,can be written ,but value never be changed . From Offset (value 0x08) is normal . why only GPIO like this ,I write some time and control -register always OK.
Do you know Why , Can you give me some advices ? Thank you .
I also try to .devs ==> Res.mmio(0x7f008000, 0x7f00813f); .lcd.c ==>l4io_request_iomem(0x7f008000, 0x03f, L4IO_MEM_NONCACHED, &lcd_gpio_virt_base); when "l4_mem_write(lcd_gpio_virt_base+0x100,L4_MEM_WIDTH_4BYTE,0xaaaaaaaa); The offset 0x00 ,and 0x04 same problem ,but now I can write 0xaaaaaaaa for this IO port, even though working not well .
please help to check the problem . Do you have some good example for this .
ps:
.devs file :
local Res = Io.Res local Hw = Io.Hw
Io.hw_add_devices { LCD = Hw.Device { hid = "LCD s3c6410"; Res.mmio(0x77100000, 0x77100fff); }, GPIO = Hw.Device { hid = "LCDGPIO"; Res.mmio(0x7f008100, 0x7f00813f); } }
.cfg file : is not changed ,same as arm-rv-lcd.cfg .io file :
gui => new System_bus() {
} fbdrv => new System_bus() { LCD => wrap(hw-root.LCD); GPIO => wrap(hw-root.GPIO); }
module.list
entry arm-lcd-example
bootstrap bootstrap -serial kernel fiasco -serial_esc roottask moe rom/arm-rv-lcd.cfg module arm-rv-lcd.cfg module arm-rv-lcd.io module arm-rv-eb.devs module l4re module io module ned module fb-drv module mag module ex_fb_spectrum_cc module hello
--------------------------------------------------------------------------------------------------- Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful.If you have received this communication in error,please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you. ---------------------------------------------------------------------------------------------------
Hi,
On Tue Feb 26, 2013 at 20:10:15 +0800, Jason.han wrote:
Now I have GPIO Mapping problems happened when
run the L4re in Arm 11 (6410 ).
.devs ==> Res.mmio(0x7f008100, 0x7f00813f); .lcd.c ==>l4io_request_iomem(0x7f008100, 0x03f,
L4IO_MEM_NONCACHED, &lcd_gpio_virt_base);
when
"l4_mem_write(lcd_gpio_virt_base+0x00,L4_MEM_WIDTH_4BYTE,0xaaaaaaaa); download in real-hw board : the core will died as it :
Ned: loading file: 'rom/arm-rv-lcd.cfg'
hello | Hello World! IO | Dev_factory: register factory for N2Hw6DeviceE IO | GTF: register factory for 7Pci_dev IO | GTF: register factory for N2Hw12Msi_resourceE IO | Dev_factory: register factory for N2Hw11Gpio_deviceE IO | Io service IO | Ready. Waiting for request. fbdrv | Using LCD driver: S3C6410 fbdrv | lcd_control_virt_base is 0x3000 fbdrv | lcd_gpio_virt_base is 0x4000 fbdrv | Video memory is at virtual 0x5000 (size: 0x3fc00 Bytes) fbdrv | Physical video memory is at 0x50394000 ==>core died after delete it and only use l4_mem_read , value always is IO | Ready. Waiting for request. fbdrv | Using LCD driver: S3C6410 fbdrv | lcd_control_virt_base is 0x3000 fbdrv | lcd_gpio_virt_base is 0x4000 fbdrv | Video memory is at virtual 0x5000 (size: 0x3fc00 Bytes) fbdrv | Physical video memory is at 0x50395000 fbdrv | 0 value is 0x220022 ==> core run is ok. In the range of the GPIO ,whatever I defined , the lcd_gpio_virt_base + offset (value 0) is always 0x220022 ,can't be written . the lcd_gpio_virt_base + offset (value 0x04) is always 0x23 ,can be written ,but value never be changed . From Offset (value 0x08) is normal . why only GPIO like this ,I write some time and control -register always OK. Do you know Why , Can you give me some advices ? Thank you . I also try to .devs ==> Res.mmio(0x7f008000, 0x7f00813f); .lcd.c ==>l4io_request_iomem(0x7f008000, 0x03f, L4IO_MEM_NONCACHED, &lcd_gpio_virt_base); when "l4_mem_write(lcd_gpio_virt_base+0x100,L4_MEM_WIDTH_4BYTE,0xaaaaaaaa); The offset 0x00 ,and 0x04 same problem ,but now I can write 0xaaaaaaaa for this IO port, even though working not well .
What I notice is that you want to have 0x7f008100, however, mappings are page granular, i.e. lower 3 digits are 0. The output says the virt_base is 0x4000, so you probably want to access 0x4100. Maybe the device at offset 0 is behaving like what you're seeing.
Adam
l4-hackers@os.inf.tu-dresden.de