changeset 72:63a375affb27

Merge
author heinrichsweikamp
date Tue, 11 Sep 2018 22:16:05 +0200
parents c66e66f6faa7 (diff) 6a6116d7b5bb (current diff)
children 06cfc7457c9e
files
diffstat 10 files changed, 0 insertions(+), 341 deletions(-) [+]
line wrap: on
line diff
--- a/wiki/Detailed CPU1-Discovery Project.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-# How to Create From Scratch a Project for _CPU1-Discovery_ Code #
-
-The OpenSTM32 wiki have a [page](http://www.openstm32.org/Getting%2Bstarted%2Bwith%2BSystem%2BWorkbench%2Bfor%2BSTM32) to start a project from scratch. With the latest version of every support libraries and sources from ST. But here I prefer to have a project with the support files validated (and compatible) with the _OSTC4_ code.
-
-## Start with an Empty Project ##
-
-**Special Notes**:
-
-- _Linux_ users should read about this **well known _Eclipse_ bug** : http://www.openstm32.org/faq1#q22
-- We do have a _STM32F427IIT6_ chip as CPU1. But the support file provided by _ST_ lake for _LCD TFT Display Controller_ (aka LTDC), even in the latest available version 1.7.2 from 2017-11-06... So we use the STM32F429IITx support file instead, that seems to be similar enough. 
-
-In the following description, I suppose you used _mercurial_ to clone the sources into a **D:\Dev\OSTC4** directory. Make the changes for your own settings...
-
-0. Start the IDE. On most machine it will be the `eclipse` in the _Ac6_ folder you installed.
-1. Create an empty project: `File` > `New` > `C Project`
-2. Choose `AC6 STM32 MCU Project` and `AC6 STM32 MCU GCC`. Click `Next`  
-Note: **make sure NOT TO CLICK FINISH... as it will skip all the rest of the configuration wizard !**  
-3. Keep `Debug` and `Release` configurations. Click `Next`
-4. Create a new board, that you can name **OSTC4-CPU1-F429**, by choosing:  
->   Series: `STM32F4`  
->   Mcu: `STM32F429IITx`   
->   Debug: `JTAG`    
-Click `Next`.    
-5. Keep `No firmware` and select `Don't generate startup files`. Then click `Finish`
-
-## Configure Various Settings ##
-
-1. In the _C/C++ Projects_ explorer, select your project top-level folder
-2. Right on it, select `Properties`, `Resource` and set `Text file encoding` to **UTF-8**
-3. Right on it, select `Properties`, `Resource` then `Linked Resources` and click on `New...` to define a new variable **OSTC4** that points to your source folder **D:\Dev\OSTC4** (or whatever path you used on your system).    
-This should allow to change the project's origin with a single variable change.
-4. Right on it, select `Properties`, `Settings`, `Optimization` and set `Optimization Level` to **Optimize for size (-Os)**
-
-
-# Add Sources Folders #
-
-1. In the _C/C++ Projects_ explorer, select your project top-level folder
-2. Right-click to add a `New` > `Folder`. In `Advanced settings >` click `Link to alternate location` and then the `Variables...` button. Click on the **OSTC4** variable, then click `Extend...` and select the **Common\\** sub-directory. Click `Finish`
-3. Do the same to import the linked folder  **OSTC4\Discovery**
-
-## Make _Eclipse_ aware you just added sources, not junk ##
-
-(_Note: this step is only useful on specific versions of Eclipse. And already done by default on others..._)
-
-1. In the _C/C++ Projects_ explorer, open your project top-level project.
-2. Right click on the `Common` folder, select `Resource Configurations...`, and `Exclude from build`. Make sure to UNCHECK both `Debug` and `Release` check-boxes.
-3. Do the same for the `Discovery` folder.
-
-## Make _Eclipse_ aware not to compile templates ##
-
-Some sources or directories in the _ST_ distribution contains source you shall not compile. So you should tell _OSE_.
-
-1. In the _Project Explorer_, open item `Common/Drivers/STM32F4xx_HAL_DRIVER_v120/Src`. Right click on `stm32f4xx_hal_msp_template.c`source file, select `Resource Configurations...`, and `Exclude from build`. Make sure both `Debug` and `Release` check-boxes are CHECKED.
-2. Do the same on the `Common/Drivers/STM32F4xx_v220/Source/Templates` directory.
-
-# Compile #
-
-Ok, sources are there. You can read them. But you need a few more efforts to let the IDE find everything he requires to compile _CPU1 Discovery_ firmware.
-
-## Add include paths ##
-
-1. Select your top-level project, right-click to edit `properties`. In `C/C++ Build` choose `Settings`, then `MCU GCC Compiler` and `Includes`. **Make sure to select `Configuration: [All Configurations]` **. Click `Add...` choose `Workspace...` and select the `Common/Drivers/CMIS_v210` directory.
-2. Do the same for `Common/Drivers/STM32F4xx_v220/Include` directory.
-3. Do the same for `Common/Drivers/STM32F4xx_HAL_DRIVER_v120/Inc` directory.
-4. Do the same for `Common/Inc` directory.
-5. Do the same for `Discovery/Inc` directory.
-6. Use the _Move Up_ icon to make sure `Discovery/Inc` is first.
-7. Use the `Configuration:` popup to check you have all the includes in both `Debug` and `Release` configuration.
-
-Once done, If you go to the _C/C++ Projects explorer_, open your top-level project, and open the `Includes` item, you should see:
-
-- a few lines added by the system `.../Ac6/Workbench/plugins/.../compiler/...` with include paths required by the GCC compiler.
-- then your 5 include directories (shown in alphabetic order, not priority order... too bad). Make sure to open each of them and to double-click on a .h file to check it opens correctly in the IDE.
-
-## Add Link Options ##
-
-1. Select your top-level project, right-click to edit `properties`. In `C/C++ Build` choose `Settings`, then `MCU G++ Linker` and `General`.
-And select _linker Script_: `OSTC4/Common/CPU1-F429.ld`
-
-
-## Prepare generation of bin file
-1. Select your top-level project, right-click to edit `properties`. In `C/C++ Build` choose `Settings`, then tab `Build Steps` and `Post build step command`.
-2. Add option -R .upper* to the command to removed the upper memory section, which is provided by the font library => 
-`arm-none-eabi-objcopy -R .upper* -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin"; arm-none-eabi-size "${BuildArtifactFileName}"`
-
-
-## Build ELF firmware ##
-
-1. Click the `Build` button (hammer icon) on the top bar.
\ No newline at end of file
--- a/wiki/Detailed CPU1-Upper Project.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-# How to Create From Scratch a Project for _CPU1-Upper_ Code #
-
-The main CPU (aka. _CPU1 Discovery_) firmware is splitted in two parts:
-- The proper _CPU1 Discovery_ firmware, with the main code.
-- The _protected upper memory_ firmware, which is programmed during _OSTC4_ production, and contains (amongst other things) code used to upload and install firmware upgrades.
-
-## Make a specific project ##
-
-Follow the same procedure than for [CPU1-Discovery](Detailed CPU1-Discovery Project.md), (same processor, same includes) but include the `CPU1-Upper` source directory.
-
-**
-NOT FINISHED YET... BE PATIENT
-**
--- a/wiki/Detailed CPU2-RTE Project.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-# How to Create From Scratch a Project for _CPU2-RTE_ Code #
-
-Follow the same procedure than for [CPU1](Detailed CPU1-Discovery Project.md), with changes:
-
-- Create a new _board_ for processor:  
->   Series: `STM32F4`  
->   Mcu: `STM32F411xE`  
->   Debug: `JTAG`  
-
-- Add `Small_CPU` linked source directory (instead of _Discovery_)
-
-- Use linker script `OSTC4/Small_CPU/CPU2-F411.ld`
--- a/wiki/Hardware Ressources.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-# OSTC4 Resources #
-
-## Hardware ##
-
-There are two processors in the OSTC4:
-
-* an [STM32F427IIT6](http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32-high-performance-mcus/stm32f4-series/stm32f427-437/stm32f427ii.html) as main processor. It is a Cortex-M4 processor with FPU, running at 180 MHz.
-It crunches most of the decompression code, the graphic display operations and the user interface.
-
-* an [STM32F411RET6](http://www.st.com/en/microcontrollers/stm32f411re.html) as the RTE (Real-Time-Environment) processor.
-This is another processor of the ARM Cortex M4 family, but with extremely low power modes and plenty of communication ports.
-It runs real-time gas exchange simulation during dive, and interface to most peripherals.
-
-Various peripherals are connected to them:
-
-- A 800x480 pixels _LCD_ screen, with a live stream of color pixels send by an auto-refresh SDRAM.
-- A pressure sensor.
-- A magnetic compass.
-- An ambient light sensor.
-- Three buttons.
-- A battery, and a battery gauge.
-
-_OSTC4_ programming is based on the _HAL_ (for _Hardware Abstraction Layer_) provided by _ST_.
-This allows to have a more readable C code, and to evolve more easily to another processors of the same familly.
-
-## Drivers Used by the Main CPU - aka CPU1-Discovery ##
-
-The main _ARM-Cortex 4_ CPU uses the following resources provided by the
-_HAL_ (_Hardware Abstraction Layer_)
-provided by the processors makers _ST_ to ease code developement, security and portability:
-
-- **HAL_DMA** _Direct Memory Accelerator_: automated memory transfers, used to manage SPI reception and transmission channels.
-- **HAL_DMA2D** : a _specialized DMA dedicated to images manipulation_, used by `gfx_engine`to clear screens.
-- **HAL_FMC** _Flexible Memory Controller_ to drice the external SDRAM used for display.
-- **HAL_GPIO** _General Purpose Input/Output_: this is the programmable pins of the chip, used to connect nearly evrything.
-- **HAL_LTDC** _LCD TFT Display Controller_: to transfer images to the screen memory ?
-- **HAL_NVIC** _Nested Vector Interrupt Controller_: CORTEX IRQs used in `base.c` to handle buttons interrupts, in `gfx_engine.c` to manage VSYNC (screen's vertical sync) and in `stm32f4xx_hal_msp_hw2.c` to manage all other interrupts (ticks, DMA, DMA2D, TIM and USART).
-- **HAL_RCC** _Reset and Clock Control_: used in `base.c` to setup system, PLL and screen clocks.
-- **HAL_SDRAM** RAM controller used in `stm32f4xx_hal_msp_hw2.c` and in `base.c` to interface the external memory used by the screen.
-- **HAL_SPI** _Serial Peripheral Interface_: implement the [standard SPI protocol](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus). Used to do full duplex communication between the two CPU in `data_exchange_main.c` to exchange dive settings and state, and in `externCPU2bootloader.c` to send firmware to _CPU2-RTE_. 
-- **HAL_TIM** basic _Timers_ used in `base.c` and PWM (_Pulse Width Modulation_) used to control backlight intensity.
-- **HAL_UART** _Universal Asynchronous Receiver Transmitter_: serial communications used in `bonnexConnect.c`, `ostc.c`, `stm32f4xx_hal_msp_hw2.c`, `tCCR.c`, `tCpmm.c` and `tDebug.c`
-
-## Drivers Used by the Secondary CPU - aka CPU2-RTE ##
-
-- **HAL_ADC** _Analog to Digital Converter_ channel 1 is used in `adc.c` for the ambient light sensor.
-- **HAL_DMA** _Direct Memory Accelerator_: automated memory transfers, used to manage SPI reception and transmission channels when communicating to main CPU.
-- **HAL_FLASH** allow erasing, programming, and managing read/write protection mechanisms of the internal FLASH memory.
-- **HAL_GPIO** _General Purpose Input/Output_: this is the programmable pins of the chip, used to connect nearly evrything.
-- **HAL_I2C** _Inter-Integrated Circuit_ [bus controller](https://en.wikipedia.org/wiki/I2C) is another standard bus, used to connect the pressure sensor in `pressure.c`, the magnetic compass in `compass.c` and the battery state in `batteryGauge.c`. Initialisations are in `baseCPU2.c` and `stm32f4xx_hal_msp_v3.c`.
-- **HAL_NVIC** _Nested Vector Interrupt Controller_: CORTEX IRQs used in `baseCPU2.c` to handle clock ticks, buttons and wireless state. In `spi.c` to know end of SPI transmissions. And in `stm32f4xx_hal_msp_v3.c` to setup various _I2C_ interupts.
-- **HAL_PWR** _Power Controller_: to manage sleep mode, low power and wakeup. And in `rtc.c` to manage FLASH power down.
-- **HAL_RCC** _Reset and Clock Control_: used in `baseCPU2.c` to setup system, PLL clocks for ...
-- **HAL_RTC** _Real Time Clock_ to handle date and time in `scheduler.c`
-- **HAL_SPI** _Serial Peripheral Interface_: implement the [standard protocol](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus). Used to do full duplex communication between the two CPUs. In `spi.c`, SPI1 is used to communicate to the maon CPU, and SPI3 to commicate to buttons.
-- **HAL_UART** _Universal Asynchronous Receiver Transmitter_: serial communications used in `uart.c`
--- a/wiki/Home.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-# Open Source Code for the OSTC4 Dive Computer #
-
-
-## Documentation ##
-
-[Modules](Modules.md) page details the code organisation.    
-[Hardware Ressources](Hardware Ressources.md) page details the hardware parts,
-the low-level, and the middle-ware drivers used to manage them.    
-
-## How to Compile ? ##
-
-Most of the code is written in _C-99_. A small glue is in assembly. Everything is compatible with
-the _GCC_ toolchain for ARM processors.
-
-* [Using OpenSTM32](Using OpenSTM32.md), the free integrated IDE from the OpenSTM32 community, based on GCC cross compiler within an _Eclipse_ environment. Project management and configuration. Compile & Link. Hardware debugger through a JTAG/SWD probe.
-
-## Other Tools ##
-
-* [STM32F429I-DISC1](http://www.st.com/en/evaluation-tools/32f429idiscovery.html)
-  It is a chip (~ 20€) evaluation board, that contains a _STM32F429ZIT6_ CPU, 2MB flash ROM, 256KB RAM, a 320x240 LCD touch screen a few LEDs and a pair of buttons. Very cheap (~ 25 euro).  
-  It should allows to run _OSTC4 Discovery code_, but just for basic testing as it lacks all specific sensors, LCD screen 800x640 resolution and the 3 interface buttons.  
-  _An interesting project would be to add a special compilation option to get some reasonable support on this chip debugging platform, emulating the screen and buttons..._
-
-* [STM32 ST-LINK Utility](http://www.st.com/en/development-tools/stsw-link004.html) (**Windows only**) allow to do many things to the _discovery kit_ through its JTAG/SWD interface: upload & verify application code, dump memory. Provides both a _Graphical_ and a _Command Line_ interface.  
-
-* [STMStudio](http://www.st.com/en/development-tools/stm-studio-stm32.html) (**WINDOWS ONLY**) allows real-time inspection of an application running on the _discovery kit_.  
-  It is connected through the JTAG/SWD interface.
-  It allows to read and write variables defined in the application's binary (ELF file). To display or to trace graphs (eg. to display gas loading during dive simulation ?)
-
-* [OpenOCD](http://openocd.org/) is another command utility to speak JTAG/SWD. Seems hard to use directly (very low level commands). But _OpenSTM32 IDE_ do use it for programming and debugging, and you can copy configuration files from a working project. Note version 0.10 (or above) seems mandatory to dump firmware contents.
-
-* _**OSTC4 with 2 SWD connectors**_, the ultimate debugging tool: a specially made OSTC4, with a pair of extra SWD connectors you can connect to any JTAG/SWD probe. Cannot dive (absolutely not water tight), but allows to debug code on the real hardware (ie. set break points, single step the code and read/write variables), using a standard JTAG/SWD debuggers (eg. a low cost [ST-Link/V2](http://www.st.com/stlinkv2) for ~ 25 euro).  
-  _Note that H&W will freely provide SWD OSTC4 platform to programmer serious about involving in code development._
-
-## Other Resources ##
-
-* The **Ultimate Reference** for everyone serious about the OSTC4 firmware details
-and _HAL_ programming (1800 pages): [UM1725 HAL Users Manual](www.st.com/resource/en/user_manual/dm00105879.pdf)
-* Reserving memory from the linker script: https://mcuoneclipse.com/2012/11/01/defining-variables-at-absolute-addresses-with-gcc/
-* Placing a variable at an absolute address: https://sourceware.org/binutils/docs-2.24/ld/Source-Code-Reference.html#Source-Code-Reference
\ No newline at end of file
--- a/wiki/Import_Ref_Projects.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-# How to import reference projects into the workspace #
-
-
-# Precondition # 
-This instruction assumes that the name of your OSTC4 clone in your workspace is `ostc4`
-If this is not the case follow the instructions of chapter "Adapt repository location" below 
-
-# Import steps #
-
-- Select `File` => `Import..` => `General` => `Existing project into workspace` => `Next`
-- Select the `RefPrj` folder of your clone
-- Select the projects you want to import in the projects list
-- Check the box `Copy projects into workspace`
-- Next
-- Finish
-
-# Adapt repository location #
-
-Only necessary if precondition is not met
-Please update this instruction if you know a better solution to add the repository path as relativ link.
-
-- Select top level project => `Properties` => `Resources` => `Linked Resources`
-- Edit `OSTC4` variable: Replace `${WORKSPACE_LOC\ostc4` with ${WORKSPACE_LOC}\<YourRepositoryPath>
-- Select top level project => `Properties` => `C/C++ Build` => `Settings` => `MCU GCC Linker` => `General`
-- Edit linker script location: Change `${ProjDirPath}\..\ostc4\Small_CPU\CPU2-RTE.ld` to ${ProjDirPath}\..\<YourRepositoryLocation>\Small_CPU\CPU2-RTE.ld
\ No newline at end of file
--- a/wiki/Make Firmware File.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-# How to Make an Uploadable Firmware File for the OSTC4 #
-
-## Build Command Line Tools ##
-
-## Run the Tools Manually ##
-
-## Add Automatic Convertion to your Project ##
-
-**
-NOT FINISHED YET... BE PATIENT
-**
--- a/wiki/Modules.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-# OSTC4 Code Modules #
-
-## Main CPU - aka CPU1-Discovery ##
-
-For historical reasons, the firmware of the main CPu was divided in three parts.
-It helps development, allow smalled upgrades, and improve security as a bad manipulation won't kill the bootloader, responsible fot the next firmware upgrade.
-
-### Bootloader ##
-
-The code responsible to upload new firmwares for both CPU.
-
-### Font Pack ###
-
-This module does not contains any code. Just font data and images.
-
-### Firmware code ###
-
-The main OSTC4 firmware. The more important modules are:
-
-- Buehlmann decompression algorithm.
-- VPM decompression algorithm.
-- The simulator and dive planner.
-- Logbook display (surface and dive mode).
-- All user interface code, during dive or surface mode (`t*.c` files).
-- Graphics (gfx) engine.
-- Plus interface to the other CPU, the management of the _LCD_ screen, and the optional _Bonnex_ interface.
-
-## Small CPU - aka CPU2-RTE ##
-
-The _Real Time_ CPU handle everything that requires precise timming to function perperly.
-
-The most important modules are:
-
-- Real time computation of gas exchanges during dive (aka the _LifeData_ structure).
-- Analog to digital conversion for the ... ambient light sensor.
-- I2C bus interface to the pressure sensor, the magnetic compass and the battery gauge.
-- SPI bus interface to the buttons and to the other CPU.
-- Serial interface to the _RS232-over-Wireless_ connection.
--- a/wiki/Original HELP page.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# Welcome
-
-Welcome to your wiki! This is the default page we've installed for your convenience. Go ahead and edit it.
-
-## Wiki features
-
-This wiki uses the [Markdown](http://daringfireball.net/projects/markdown/) syntax. The [MarkDownDemo tutorial](https://bitbucket.org/tutorials/markdowndemo) shows how various elements are rendered. The [Bitbucket documentation](https://confluence.atlassian.com/x/FA4zDQ) has more information about using a wiki.
-
-The wiki itself is actually a mercurial repository, which means you can clone it, edit it locally/offline, add images or any other file type, and push it back to us. It will be live immediately.
-
-Go ahead and try:
-
-```
-$ hg clone https://JeanDo@bitbucket.org/JeanDo/ostc4/wiki
-```
-
-Wiki pages are normal files, with the .md extension. You can edit them locally, as well as creating new ones.
-
-## Syntax highlighting
-
-
-You can also highlight snippets of text (we use the excellent [Pygments][] library).
-
-[Pygments]: http://pygments.org/
-
-
-Here's an example of some Python code:
-
-```
-#!python
-
-def wiki_rocks(text):
-    formatter = lambda t: "funky"+t
-    return formatter(text)
-```
-
-
-You can check out the source of this page to see how that's done, and make sure to bookmark [the vast library of Pygment lexers][lexers], we accept the 'short name' or the 'mimetype' of anything in there.
-[lexers]: http://pygments.org/docs/lexers/
-
-
-Have fun!
\ No newline at end of file
--- a/wiki/Using OpenSTM32.md	Tue Sep 11 19:29:58 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-# Using OpenSTM32 IDE to Compile OSTC4 Firmware #
-
-The free and Open [STM32 IDE](http://www.openstm32.org/System%2BWorkbench%2Bfor%2BSTM32) is an integrated development environment based on _Eclipse_ that will allows you to compile and link code for the OSTC4 dive computer.
-You will then be able to generate `.hex` firmware files to upload to your computer using your favorite tools, eg. [OSTC Companion](https://ostc-planner.net/companion). 
-
-1. Register on http://www.openstm32.org/ : that will allows you to download the IDE.
-2. Once registered and logged in, you can go to _Documentation_ and _Installation Manual_. Follow the instructions to install the IDE (available for Windows 7, MacOS and Linux).
-3. Use the ready made project ... in ... 
-
-Or you can create a brand new project by following the _How To_'s:
-
-- [HowTo compile CPU1-Discovery main firmware](Detailed CPU1-Discovery Project.md)
-- [HowTo compile CPU1-Discovery protected area firmware](Detailed CPU1-Upper Project.md)
-- [HowTo compile CPU2-RTE real-time firmware](Detailed CPU2-RTE Project.md)
-- [HowTo generate uploadable firmware file](Make Firmware File.md)