* [ECOS] Port to Accelent IDP StrongARM SA1110 @ 2001-07-18 15:50 Cristiano Ligieri Pereira 2001-07-18 19:32 ` Jonathan Larmour 0 siblings, 1 reply; 11+ messages in thread From: Cristiano Ligieri Pereira @ 2001-07-18 15:50 UTC (permalink / raw) To: ecos-discuss Hi all, I'm working on porting eCos to this platform. This is a StrongARM SA1110 based platform sold by Accelent systems ( http://www.accelent.com ). The board has some similarities with Assabet and consequently I'm using the Assabet port as a template for the porting. This board has a OS Loader which reads an image file from the Compact Flash Interface (if there is a card attached in), copy this file to SDRAM and transfer the execution to a predefined memory position (defined when the image is created by their development tool). As far as I understand, I have two options: create a GDB Stubs application that can be copied to the CF card and then booted into the SDRAM memory or port RedBoot and do the same thing. Re this, which option is better? (I'm going with the GDB stubs so far but as I've just started I still have time to change...) Re the port, first of all I've copied the Assabet HAL directory and I'm working on modifying this directory. As stated in the porting guide I've modified the CDL files (renaming stuff), the memory mapping (which is 0x80000000 for SDRAM (size: 32MB) and 0x90000000 for FLASH (size: 16MB)) and added the necessary packages to the ecos.db file (I basically replicated all the Assabet packages and renamed them). I know that I've got more thing to do to starting testing the port but anyway I think that the modifications I've done so far should be enough to generate a ecos stubs tree with the following command (I named the new platform as accelent): ecosconfig new accelent stubs this commands outputs the following messages: ecos.db, package CYGPKG_NET_AUTOTEST: warning This package is not present in the component repository. There is no directory `/opt/cvsecos/packages/net/autotest'. U CYG_HAL_STARTUP, new inferred value ROM U CYGSEM_HAL_ROM_MONITOR, new inferred value 1 U CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM, new inferred value 0 U CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT, new inferred value 0 U CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS, new inferred value 1 U CYGBLD_BUILD_COMMON_GDB_STUBS, new inferred value 1 If I try to change the options as also stated in the porting guide: ecosconfig remove CYGPKG_IO ecosconfig remove CYGPKG_IO_SERIAL ecosconfig remove CYGPKG_ERROR and disable the options CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT, CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT and CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT and set CYG_HAL_STARTUP option to RAM and issue the command: ecosconfig tree I get the following messages: ecos.db, package CYGPKG_NET_AUTOTEST: warning This package is not present in the component repository. There is no directory `/opt/cvsecos/packages/net/autotest'. U CYGSEM_HAL_USE_ROM_MONITOR, new inferred value 0 C CYGBLD_BUILD_GDB_STUBS, "requires" constraint not satisfied: CYG_HAL_STARTUP == "ROM" C CYGBLD_BUILD_GDB_STUBS, "requires" constraint not satisfied: CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT C CYGBLD_BUILD_GDB_STUBS, "requires" constraint not satisfied: CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT C CYGSEM_HAL_ROM_MONITOR, "requires" constraint not satisfied: CYG_HAL_STARTUP == "ROM" Unable to generate build tree, this configuration still contains conflicts. Either resolve the conflicts or use --ignore-errors In short these options seem to conflit and I'm not clear why and how to fix it. Any one could please give me a hand? Thanks, Cristiano. ------------------------------------------------------------ Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-18 15:50 [ECOS] Port to Accelent IDP StrongARM SA1110 Cristiano Ligieri Pereira @ 2001-07-18 19:32 ` Jonathan Larmour 2001-07-18 22:35 ` Cristiano Ligieri Pereira 0 siblings, 1 reply; 11+ messages in thread From: Jonathan Larmour @ 2001-07-18 19:32 UTC (permalink / raw) To: Cristiano Ligieri Pereira; +Cc: ecos-discuss Cristiano Ligieri Pereira wrote: > > As far as I understand, I have two options: create a GDB Stubs application > that can be copied to the CF card and then booted into the SDRAM memory or > port RedBoot and do the same thing. Re this, which option is better? The GDB stubs weren't really intended for RAM startup, hence the problems you've had. RedBoot however is, so that's a better target to aim for. Jifl -- Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062 Maybe this world is another planet's Hell -Aldous Huxley || Opinions==mine Come to the Red Hat TechWorld open source conference in Brussels! Keynotes, techie talks and exhibitions http://www.redhat-techworld.com/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-18 19:32 ` Jonathan Larmour @ 2001-07-18 22:35 ` Cristiano Ligieri Pereira 2001-07-19 5:56 ` Gary Thomas 0 siblings, 1 reply; 11+ messages in thread From: Cristiano Ligieri Pereira @ 2001-07-18 22:35 UTC (permalink / raw) To: Jonathan Larmour; +Cc: ecos-discuss Ok. Now I'm getting these errors when compiling RedBoot: /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x324dc of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .text is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x324dc of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .fini is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x353e0 of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .rodata is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x353e0 of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .rodata1 is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x353e0 of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .fixup is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x353e0 of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .gcc_except_table is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x35b44 of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .data is not within region ram /tools/H-i686-pc-linux-gnu/arm-elf/bin/ld: address 0x4be58 of /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf section .bss is not within region ram /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/lib/libtarget.a(redboot_main.o): In function `cyg_start': /opt/cvsecos/packages/redboot/current/src/main.c:272: undefined reference to `accelent_program_new_stack' /usr/home/cpereira/ecos/pads/port/redboot.RAM/install/lib/libtarget.a(redboot_main.o): In function `do_go': /opt/cvsecos/packages/redboot/current/src/main.c:450: undefined reference to `accelent_program_new_stack' collect2: ld returned 1 exit status make[1]: *** [/usr/home/cpereira/ecos/pads/port/redboot.RAM/install/bin/redboot.elf] Error 1 make[1]: Leaving directory `/usr/home/cpereira/ecos/pads/port/redboot.RAM/redboot/current' make: *** [build] Error 2 It looks like my memory mapping is not configured properly. Here the configuration files go: -- mlt_arm_sa11x0_accelent_ram.h -- // eCos memory layout - Fri Oct 20 05:56:24 2000 // This is a generated file - do not edit #ifndef __ASSEMBLER__ #include <cyg/infra/cyg_type.h> #include <stddef.h> #endif #define CYGMEM_REGION_ram (0x80000000) #define CYGMEM_REGION_ram_SIZE (0x2000000) #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) #ifndef __ASSEMBLER__ extern char CYG_LABEL_NAME (__heap1) []; #endif #define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1)) #define CYGMEM_SECTION_heap1_SIZE (0x2000000 - (size_t) CYG_LABEL_NAME (__heap1)) -- mlt_arm_sa11x0_accelent_ram.ldi -- // eCos memory layout - Fri Oct 20 05:56:24 2000 // This is a generated file - do not edit #include <cyg/infra/cyg_type.inc> MEMORY { ram : ORIGIN = 0x80000000, LENGTH = 0x2000000 } SECTIONS { SECTIONS_BEGIN SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA) SECTION_rom_vectors (ram, 0x20000, LMA_EQ_VMA) SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_rodata1 (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) CYG_LABEL_DEFN(__heap1) = ALIGN (0x8); SECTIONS_END } -- I don't know if it's make sense, but I've tried it for the mlt_arm_sa11x0_accelent_ram.ldi file and it also didn't work: // eCos memory layout - Fri Oct 20 05:56:24 2000 // This is a generated file - do not edit #include <cyg/infra/cyg_type.inc> MEMORY { ram : ORIGIN = 0x80000000, LENGTH = 0x2000000 } SECTIONS { SECTIONS_BEGIN SECTION_fixed_vectors (ram, 0x80000020, LMA_EQ_VMA) SECTION_rom_vectors (ram, 0x80020000, LMA_EQ_VMA) SECTION_text (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_fini (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_rodata (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_rodata1 (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_fixup (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_gcc_except_table (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_data (ram, ALIGN (0x80000004), LMA_EQ_VMA) SECTION_bss (ram, ALIGN (0x80000004), LMA_EQ_VMA) CYG_LABEL_DEFN(__heap1) = ALIGN (0x80000008); SECTIONS_END } Thanks again, Cristiano. ------------------------------------------------------------ Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira On Thu, 19 Jul 2001, Jonathan Larmour wrote: > Cristiano Ligieri Pereira wrote: > > > > As far as I understand, I have two options: create a GDB Stubs application > > that can be copied to the CF card and then booted into the SDRAM memory or > > port RedBoot and do the same thing. Re this, which option is better? > > The GDB stubs weren't really intended for RAM startup, hence the problems > you've had. RedBoot however is, so that's a better target to aim for. > > Jifl > -- > Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062 > Maybe this world is another planet's Hell -Aldous Huxley || Opinions==mine > Come to the Red Hat TechWorld open source conference in Brussels! > Keynotes, techie talks and exhibitions http://www.redhat-techworld.com/ > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-18 22:35 ` Cristiano Ligieri Pereira @ 2001-07-19 5:56 ` Gary Thomas 2001-07-19 9:57 ` Cristiano Ligieri Pereira 0 siblings, 1 reply; 11+ messages in thread From: Gary Thomas @ 2001-07-19 5:56 UTC (permalink / raw) To: Cristiano Ligieri Pereira; +Cc: ecos-discuss On 19-Jul-2001 Cristiano Ligieri Pereira wrote: >#include <cyg/infra/cyg_type.inc> > > MEMORY > { > ram : ORIGIN = 0x80000000, LENGTH = 0x2000000 > } > > SECTIONS > { > SECTIONS_BEGIN > SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA) > SECTION_rom_vectors (ram, 0x20000, LMA_EQ_VMA) &&&&&&& These numbers (0x20, 0x20000) need to be within the "ram" section. You probably want this > SECTION_fixed_vectors (ram, 0x80000020, LMA_EQ_VMA) > SECTION_rom_vectors (ram, 0x800020000, LMA_EQ_VMA) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-19 5:56 ` Gary Thomas @ 2001-07-19 9:57 ` Cristiano Ligieri Pereira 2001-07-19 10:24 ` Gary Thomas 0 siblings, 1 reply; 11+ messages in thread From: Cristiano Ligieri Pereira @ 2001-07-19 9:57 UTC (permalink / raw) To: Gary Thomas; +Cc: ecos-discuss What if I want to load RedBoot a couple of megs from the start of RAM. Say 3 Megs after. I'm not clear on how exaclty this affects the memory map (if it affects whatsoever). The OS Loader on the board reads a special format generated by the Accelent proprietary tool. There you specify where one wants to load the images (RAM or ROM) and where the image must be loaded into (pretty much an offset from the RAM start). Do I have to add this offset to the addresses specified below? Thanks, Cristiano. ------------------------------------------------------------ Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira On Thu, 19 Jul 2001, Gary Thomas wrote: > > On 19-Jul-2001 Cristiano Ligieri Pereira wrote: > >#include <cyg/infra/cyg_type.inc> > > > > MEMORY > > { > > ram : ORIGIN = 0x80000000, LENGTH = 0x2000000 > > } > > > > SECTIONS > > { > > SECTIONS_BEGIN > > SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA) > > SECTION_rom_vectors (ram, 0x20000, LMA_EQ_VMA) > &&&&&&& > > These numbers (0x20, 0x20000) need to be within the "ram" section. > You probably want this > > > SECTION_fixed_vectors (ram, 0x80000020, LMA_EQ_VMA) > > SECTION_rom_vectors (ram, 0x800020000, LMA_EQ_VMA) > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-19 9:57 ` Cristiano Ligieri Pereira @ 2001-07-19 10:24 ` Gary Thomas 2001-07-19 10:42 ` Cristiano Ligieri Pereira 2001-07-23 10:19 ` Cristiano Ligieri Pereira 0 siblings, 2 replies; 11+ messages in thread From: Gary Thomas @ 2001-07-19 10:24 UTC (permalink / raw) To: Cristiano Ligieri Pereira; +Cc: ecos-discuss On 19-Jul-2001 Cristiano Ligieri Pereira wrote: > > What if I want to load RedBoot a couple of megs from the start of RAM. Say > 3 Megs after. I'm not clear on how exaclty this affects the memory map (if > it affects whatsoever). > > The OS Loader on the board reads a special format generated by the > Accelent proprietary tool. There you specify where one wants to load the > images (RAM or ROM) and where the image must be loaded into (pretty much > an offset from the RAM start). > > Do I have to add this offset to the addresses specified below? > Yes. The numbers [below] should be the exact base addresses for where you want to load things. Note: on the SA11x0, I don't think that you really want to be loading RedBoot, or any eCos application, to such an address. Set up the memory mapping to move the RAM to location 0 and then use standard memory maps. > Thanks, > Cristiano. > > ------------------------------------------------------------ > Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira > > On Thu, 19 Jul 2001, Gary Thomas wrote: > >> >> On 19-Jul-2001 Cristiano Ligieri Pereira wrote: >> >#include <cyg/infra/cyg_type.inc> >> > >> > MEMORY >> > { >> > ram : ORIGIN = 0x80000000, LENGTH = 0x2000000 >> > } >> > >> > SECTIONS >> > { >> > SECTIONS_BEGIN >> > SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA) >> > SECTION_rom_vectors (ram, 0x20000, LMA_EQ_VMA) >> &&&&&&& >> >> These numbers (0x20, 0x20000) need to be within the "ram" section. >> You probably want this >> >> > SECTION_fixed_vectors (ram, 0x80000020, LMA_EQ_VMA) >> > SECTION_rom_vectors (ram, 0x800020000, LMA_EQ_VMA) >> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-19 10:24 ` Gary Thomas @ 2001-07-19 10:42 ` Cristiano Ligieri Pereira 2001-07-19 10:58 ` Gary Thomas 2001-07-19 12:02 ` Jonathan Larmour 2001-07-23 10:19 ` Cristiano Ligieri Pereira 1 sibling, 2 replies; 11+ messages in thread From: Cristiano Ligieri Pereira @ 2001-07-19 10:42 UTC (permalink / raw) To: Gary Thomas; +Cc: ecos-discuss How do I do that? Is this some MMU configuration? How to I set up the RAM location to 0? Thanks, Cristiano. PS: Hope I haven't disappointed you asking such question... :-) ------------------------------------------------------------ Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira > Yes. The numbers [below] should be the exact base addresses for where > you want to load things. > > Note: on the SA11x0, I don't think that you really want to be loading > RedBoot, or any eCos application, to such an address. Set up the memory > mapping to move the RAM to location 0 and then use standard memory maps. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-19 10:42 ` Cristiano Ligieri Pereira @ 2001-07-19 10:58 ` Gary Thomas 2001-07-19 12:02 ` Jonathan Larmour 1 sibling, 0 replies; 11+ messages in thread From: Gary Thomas @ 2001-07-19 10:58 UTC (permalink / raw) To: Cristiano Ligieri Pereira; +Cc: ecos-discuss Look carefully at the Assabet port. It does this. The RAM is physically at address 0xC0000000, but the startup code moves it to 0x00000000. Similarly, the FLASH is at [physical] 0x00000000, but eCos maps it at 0x50000000. Look in hal/arm/sa11x0/assabet/current/src/assabet_misc.c On 19-Jul-2001 Cristiano Ligieri Pereira wrote: > > How do I do that? Is this some MMU configuration? How to I set up the RAM > location to 0? > > Thanks, > Cristiano. > > PS: Hope I haven't disappointed you asking such question... :-) > > ------------------------------------------------------------ > Cristiano Ligieri Pereira - http://www.ics.uci.edu/~cpereira > >> Yes. The numbers [below] should be the exact base addresses for where >> you want to load things. >> >> Note: on the SA11x0, I don't think that you really want to be loading >> RedBoot, or any eCos application, to such an address. Set up the memory >> mapping to move the RAM to location 0 and then use standard memory maps. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-19 10:42 ` Cristiano Ligieri Pereira 2001-07-19 10:58 ` Gary Thomas @ 2001-07-19 12:02 ` Jonathan Larmour 1 sibling, 0 replies; 11+ messages in thread From: Jonathan Larmour @ 2001-07-19 12:02 UTC (permalink / raw) To: Cristiano Ligieri Pereira; +Cc: ecos-discuss Cristiano Ligieri Pereira wrote: > > How do I do that? Is this some MMU configuration? Exactly. Jifl -- Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062 Maybe this world is another planet's Hell -Aldous Huxley || Opinions==mine Come to the Red Hat TechWorld open source conference in Brussels! Keynotes, techie talks and exhibitions http://www.redhat-techworld.com/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-19 10:24 ` Gary Thomas 2001-07-19 10:42 ` Cristiano Ligieri Pereira @ 2001-07-23 10:19 ` Cristiano Ligieri Pereira 2001-07-23 11:11 ` Gary Thomas 1 sibling, 1 reply; 11+ messages in thread From: Cristiano Ligieri Pereira @ 2001-07-23 10:19 UTC (permalink / raw) To: Gary Thomas; +Cc: ecos-discuss > Note: on the SA11x0, I don't think that you really want to be loading > RedBoot, or any eCos application, to such an address. Set up the memory > mapping to move the RAM to location 0 and then use standard memory maps. Is it a requirement or a suggestion? One more question. If I set up the memory map to 0x80300000 (3 megs from starting of RAM) I have to jumpt to exactly this address? (AFAIK I have to jump to the reset vector, right???) Thanks, Cristiano. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [ECOS] Port to Accelent IDP StrongARM SA1110 2001-07-23 10:19 ` Cristiano Ligieri Pereira @ 2001-07-23 11:11 ` Gary Thomas 0 siblings, 0 replies; 11+ messages in thread From: Gary Thomas @ 2001-07-23 11:11 UTC (permalink / raw) To: Cristiano Ligieri Pereira; +Cc: ecos-discuss On 23-Jul-2001 Cristiano Ligieri Pereira wrote: > >> Note: on the SA11x0, I don't think that you really want to be loading >> RedBoot, or any eCos application, to such an address. Set up the memory >> mapping to move the RAM to location 0 and then use standard memory maps. > > Is it a requirement or a suggestion? Since you have a platform with an MMU, why not just do it? It will make your life (and ours) 10,000 times simpler. > > One more question. If I set up the memory map to 0x80300000 (3 megs from > starting of RAM) I have to jumpt to exactly this address? (AFAIK I > have to jump to the reset vector, right???) I would think so, yes. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2001-07-23 11:11 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2001-07-18 15:50 [ECOS] Port to Accelent IDP StrongARM SA1110 Cristiano Ligieri Pereira 2001-07-18 19:32 ` Jonathan Larmour 2001-07-18 22:35 ` Cristiano Ligieri Pereira 2001-07-19 5:56 ` Gary Thomas 2001-07-19 9:57 ` Cristiano Ligieri Pereira 2001-07-19 10:24 ` Gary Thomas 2001-07-19 10:42 ` Cristiano Ligieri Pereira 2001-07-19 10:58 ` Gary Thomas 2001-07-19 12:02 ` Jonathan Larmour 2001-07-23 10:19 ` Cristiano Ligieri Pereira 2001-07-23 11:11 ` Gary Thomas
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).