Deos MIPS Port
This project is to port Deos to MIPS. It also integrates the additional capabilities from Deos_Cache_Partitioning
Current Status
Work on this project is complete.
See Be a Maintainer below for MIPS SW development instructions.
We've determined that image relocation is not possible given the MIPS ABI and Honeywell's requirement for small data. This means that we need to link all the MIPS libraries at fixed addresses. Furthermore the restriction will be that small data will only work for executables. Honeywell was notified of this at CDR.
Be a Maintainer
To build and debug MIPS apps follow these steps:
- Install a fresh "experimental" set of cygwin packages from dist-fourpeaks. Choose these to get started:
- deos-maintainer-tools
- desk-mips
- To build a MIPS compatible hyperstart image and launch it within the QEMU simulator:
$ cd ~/tmp $ makeboot @/desk/platform/qemu-mips/etc/basecon.hyp $ startqemu
- To debug the kernel, BSP, or user applications, see Kernel Debugging on QEMU for more information.
Infrastructure Update
The MIPS porting activity will require re-releasing almost all the Deos components. The following table has the current status. The Tracking spreadsheet contains original effort estimates and rationale for why some components are not included. The updated milestone spreadsheet has the committments for the 11/2/2011 delivery.
Meaning of the columns:
- Sequence : Lower numbered tasks need to be complete before higher numbered tasks. If a task doesn't have a priority, then it can be done "later".
- GCC 4.6 & new build :
- Component has been ported to commonBuildSystemInterface=4 and compiles with GCC 4.6 on all targets, including MIPS.
- Eliminate compiler warnings for level E components, higher design assurance require cost benefit trade-off.
- Makefiles match canonical format.
- Static ANSI has been replaced with libansi.so.
- Library Symbols :
- Intel x86 versions import ANSI 4.0.1 compatible symbols, e.g. _strspn rather than strspn.
- Libraries : the component has been changed to only export the necessary symbols (--version-script).
- On X86, "_" symbols should be exported for all _symbols exported by legacy libraries.
- Executables : generally should not have --export-dynamic. N/A for tools.
- Informal Test :
- The tests have been ported to new test infrastructure.
- The regression runs, perhaps with some explainable errors.
- Cygwin Released : The component been at least "unreleased".
- Tests Run? : All the tests pass on on all targets (including MIPS).
- Done : All verification activities have been completed.
| Component | Sequence | GCC 4.6 & new build | Library Symbols? | Informal test? | Cygwin Released? | Tests Run? | Done | Assignee | Comments | |
|---|---|---|---|---|---|---|---|---|---|---|
| abc-tool | Yes | N/A | Yes | Yes | Yes | Yes | Thorkil | Tool qualification done for 4.6.1 for x86, ppc, and mips. Final releasing still missing. | ||
| ansi | 1 | Yes | Yes | Yes | Yes | Yes | Yes | Johan | ||
| dart | Yes | Yes | Yes | Yes | Yes | Yes | Richard | See DART_Project | ||
| dds-docs | Yes | N/A | N/A | Yes | N/A | Yes | Released as part of Deos_Chino_653D57_Release. | |||
| deos653p1-runtime | Yes | Yes | Yes | Yes | Yes | Yes | Richard | See Deos_653_P1_and_P4_Verification_Project | ||
| deos653p4-runtime | Yes | Yes | Yes | Yes | No | No | Richard | See Deos_653_P1_and_P4_Verification_Project | ||
| deos653p1-examples | Yes | Yes | Yes | Yes | Yes | Yes | Richard | |||
| deos653p4-examples | Yes | Yes | Yes | Yes | Yes | Yes | Richard | |||
| registry-cvt-win32 | Yes | N/A | Yes | Yes | Yes | Yes | ||||
| deos-training | No | No | No | No | TBD | No | Requires updates for 653. | |||
| deosname | Yes | Yes | Yes | Yes | Yes | Yes | ||||
| desk-mips | Yes | N/A | Yes | Yes | N/A | Yes | ||||
| elfchk | N/A | N/A | Yes | Yes | Yes | Yes | ||||
| hypdump | N/A | N/A | Yes | Yes | N/A | Yes | ||||
| hypstart | 2 | Yes | N/A | Yes | Yes | N/A | Yes | Released as part of Deos_Chino_653D57_Release. | ||
| link_deos | 1 | N/A | N/A | Yes | Yes | N/A | Yes | |||
| makeboot | 2 | N/A | N/A | Yes | Yes | TBD | Yes | |||
| makelib | N/A | N/A | Yes | Yes | N/A | Yes | ||||
| makereg | 2 | N/A | N/A | Yes | Yes | Yes | Yes | |||
| ftpserver | 3 | Yes | Yes | Yes | Yes | TBD | Yes | Compatible with ANSI 4.0.1. | ||
| gcc4-mips-elf | N/A | Yes | Yes | Yes | N/A | Yes | ||||
| gdbserver | 5 | Yes | Yes | Yes | Yes | N/A | Yes | Johan | Level E. No regression tests. | |
| inetd | 3 | Yes | Yes | Yes | Yes | TBD | Yes | Level E. No regression tests. | ||
| integ-tool-command-line | 1 | Yes | N/A | Yes | Yes | Yes | Yes | |||
| ioi-api | Yes | Yes | Yes | Yes | Yes | Yes | ||||
| ioi-config-tool | Yes | N/A | Yes | Yes | Yes | Yes | ||||
| ioi-cvt | Yes | N/A | Yes | Yes | Yes | Yes | ||||
| ioi-examples | Yes | N/A | Yes | Yes | Yes | Yes | 2.0.2 stable | |||
| ioi-ringBuffer | Yes | N/A | Yes | Yes | Yes | Yes | ||||
| kernel | 1 | Yes | Yes | Yes | Yes | Yes | Yes | See Kernel_Fourpeaks_Project | ||
| kernel-examples | Yes | N/A | Yes | Yes | N/A | Yes | ||||
| kernel debugger library | 4 | Yes | Yes | Yes | Yes | TBD | Yes | No regression tests. Informally tested against status monitor and MLD. | ||
| lwip | 3 | Yes | Yes | Yes | Yes | TBD | Yes | ANSI 4.0.1 compatible. MIPS test results match x86/ppc, calling that "ported". | ||
| MTL | Yes | Yes | Yes | Yes | Yes | Yes | Customer only needs Level E. Level E MIPS library released as part of Deos_Chino_653V6_Release. Required for lwip tests. See PCR:7298 | |||
| math-mips | 6 | Yes | Yes | Yes | Yes | Yes | Yes | Johan | ||
| socket-api-library | Yes | Yes | Yes | Yes | Yes | Yes | Customer only needs Level E. Level E MIPS library released as part of Deos_Chino_653V6_Release. Required for lwip tests. Ref PCR:8368 | |||
| socket-examples | Yes | Yes | Yes | Yes | Yes | Yes | Release without MIPS support as part of Deos_Chino_653D57_Release. Depends on socket-api-library. Released as part of Deos_Modelo_Initial_Software | |||
| startup-gcc | 1 | Yes | N/A | Yes | Yes | Yes | Yes | Johan | ||
| static-socket-library | 2 | Yes | N/A | Yes | N/A | N/A | Yes | |||
| static-video-library | 1 | Yes | N/A | Yes | Yes | Yes | Yes | |||
| status-monitor | 4 | Yes | Yes | Yes | Yes | TBD | Yes | Level E - No regression tests | ||
| systemvideostreams | 6 | Yes | Yes | Yes | Yes | N/A | Yes | Johan | Level E - No regression tests | |
| tardebug | 5 | Yes | N/A | Yes | Yes | N/A | Yes | Released as part of Deos_Chino_Red_Label_Release. | ||
| test-infrastructure | 4 | Yes | N/A | Yes | Yes | N/A | Yes | |||
| qemu-mips-boot | 2 | Yes | N/A | Yes | Yes | N/A | Yes | |||
| qemu-mips-config | 2 | N/A | N/A | Yes | Yes | N/A | Yes | |||
| qemu-mips-pal | 2 | Yes | Yes | Yes | Yes | N/A | Yes | 653 runtime failures appear to be virtual time related. | ||
| rtl-bouton (RTL8139) | 3 | Yes | Yes | Yes | Yes | N/A | Yes |
Kickoff meeting
Meeting Prep
- MIPS kickoff meeting corresponds to MIPSK1 in the SOW.
- 2011-July is T2 which is the same as T+9months.
- BOE spreadsheet
- Where are MIPS HW designs?
Presentation material
- Embedded software risk issues:
- Kernel
- Caching policy
- 31-bit address space
- Kernel
- Development tooling risks/issues:
- Honeywell wants to use compiler small data area, this can't be done with PIC code (i.e., all libraries and executables must be compiled/linked with fixed addresses.
- hard-float vs soft-float, mixing ABIs generates warnings. Issue is that compiler uses floating point for "optimizing" data moves, which has substantial overhead in context switching.
- Kernel will only support 32-bit ABI (kernel only saves/restores 32-bits of the GPRs). We believe Honeywell accepts this.
- Physical addresses for page and page directory tables are limited to be less than 512MB.
CDR
The CDR slides are what we presented. Currently awaiting an action item list from Larry.