gps-watch.git
4 years agotools: Add support for COMMAND_START_APP.
Tilman Sauerbeck [Sun, 7 Jul 2019 12:21:37 +0000 (14:21 +0200)]
tools: Add support for COMMAND_START_APP.

May be combined with the write or verify commands, but it can also
be used on its own.

4 years agobootloader: Use USB VID 0xf055 and PID 0x635c.
Tilman Sauerbeck [Sun, 7 Jul 2019 10:37:23 +0000 (12:37 +0200)]
bootloader: Use USB VID 0xf055 and PID 0x635c.

4 years agocommon: Make USB_VcomInit() take VID/PID and pass them on.
Tilman Sauerbeck [Sun, 7 Jul 2019 10:15:14 +0000 (12:15 +0200)]
common: Make USB_VcomInit() take VID/PID and pass them on.

4 years agocommon: Add USB_DeviceSetVendorId() and USB_DeviceSetProductId().
Tilman Sauerbeck [Sun, 7 Jul 2019 10:08:35 +0000 (12:08 +0200)]
common: Add USB_DeviceSetVendorId() and USB_DeviceSetProductId().

These configure the VID/PID pair to use.

4 years agocommon: Initialize the usb_serial module with an USB VID and PID pair.
Tilman Sauerbeck [Sun, 7 Jul 2019 10:12:13 +0000 (12:12 +0200)]
common: Initialize the usb_serial module with an USB VID and PID pair.

No change in behaviour yet, as the IDs are not yet forwarded to
the USB system proper.

4 years agobootloader: Jump to application code after serial communication is done.
Tilman Sauerbeck [Sun, 7 Jul 2019 07:57:47 +0000 (09:57 +0200)]
bootloader: Jump to application code after serial communication is done.

4 years agobootloader: Define application offset.
Tilman Sauerbeck [Sun, 7 Jul 2019 08:06:12 +0000 (10:06 +0200)]
bootloader: Define application offset.

This defines the APPLICATION_ADDR constant and sets it to the
offset of the vector table to jump to after the bootloader is done.

4 years agocommon: Implement jump_to_application().
Tilman Sauerbeck [Sun, 7 Jul 2019 07:49:05 +0000 (09:49 +0200)]
common: Implement jump_to_application().

4 years agobootloader: Make run() function return a bool.
Tilman Sauerbeck [Sun, 7 Jul 2019 07:57:33 +0000 (09:57 +0200)]
bootloader: Make run() function return a bool.

The return value indicates if the caller should continue to call
the function. It only returns false once COMMAND_START_APP is seen.

The idea is that after run() returns false, the we can jump to the
application code.

4 years agobootloader: Prepare implementation of COMMAND_START_APP.
Tilman Sauerbeck [Sun, 7 Jul 2019 07:35:51 +0000 (09:35 +0200)]
bootloader: Prepare implementation of COMMAND_START_APP.

This command is to instruct the bootloader to jump to the application.
It doesn't do anything yet.

4 years agocommon: Remove unused function USB_VcomWriteBlocking().
Tilman Sauerbeck [Thu, 4 Jul 2019 04:53:24 +0000 (06:53 +0200)]
common: Remove unused function USB_VcomWriteBlocking().

4 years agocommon: Remove unused function USB_VcomReadBlocking().
Tilman Sauerbeck [Thu, 4 Jul 2019 04:52:42 +0000 (06:52 +0200)]
common: Remove unused function USB_VcomReadBlocking().

4 years agocommon: Remove prototype for undefined function USB_VcomReadPolling().
Tilman Sauerbeck [Thu, 4 Jul 2019 04:52:00 +0000 (06:52 +0200)]
common: Remove prototype for undefined function USB_VcomReadPolling().

4 years agotools: Add firmware updater.
Tilman Sauerbeck [Fri, 28 Jun 2019 15:53:54 +0000 (17:53 +0200)]
tools: Add firmware updater.

4 years agobootloader: Call into the bootloader module from main().
Tilman Sauerbeck [Mon, 1 Jul 2019 18:01:43 +0000 (20:01 +0200)]
bootloader: Call into the bootloader module from main().

4 years agobootloader: Add the bootloader module.
Tilman Sauerbeck [Fri, 28 Jun 2019 15:53:20 +0000 (17:53 +0200)]
bootloader: Add the bootloader module.

This implements a simple serial protocol that offers access to the
capabilities of the flash module, i.e. erase, program and verify
flash contents.

4 years agocommon: Implement the transmit path for the USB serial module.
Tilman Sauerbeck [Wed, 3 Jul 2019 05:17:16 +0000 (07:17 +0200)]
common: Implement the transmit path for the USB serial module.

This adds the global variable cdc_tx_buf, which buffers data
to be written to USB.

4 years agocommon: Implement the receive path for the USB serial module.
Tilman Sauerbeck [Wed, 3 Jul 2019 04:04:02 +0000 (06:04 +0200)]
common: Implement the receive path for the USB serial module.

This sets up a ringbuffer for data received from the USB host.
When we try to read from the empty ringbuffer, another receive-data
request is sent.

Other modules can read from this ringbuffer via the new
usb_serial_read() function.

4 years agocommon: Add the ringbuf module.
Tilman Sauerbeck [Tue, 25 Jun 2019 04:35:12 +0000 (06:35 +0200)]
common: Add the ringbuf module.

4 years agocommon: Add the buffer module.
Tilman Sauerbeck [Tue, 25 Jun 2019 04:23:40 +0000 (06:23 +0200)]
common: Add the buffer module.

This comes with a C API, so it can be used by the USB serial code.

4 years agobootloader: Add the flash module.
Tilman Sauerbeck [Tue, 25 Jun 2019 04:06:30 +0000 (06:06 +0200)]
bootloader: Add the flash module.

Offers functions to erase a flash sector, program a flash sector and
verify a flash sector's contents.

Note that we don't clear the flash controller's cache by writing to
MCM_PLACR after erasing or programming sectors since it doesn't seem
to be required.

4 years agocommon: Add the crc32 module.
Tilman Sauerbeck [Mon, 24 Jun 2019 04:55:23 +0000 (06:55 +0200)]
common: Add the crc32 module.

4 years agocommon: Define panic handler using the #[panic_handler] attribute.
Tilman Sauerbeck [Mon, 24 Jun 2019 04:23:00 +0000 (06:23 +0200)]
common: Define panic handler using the #[panic_handler] attribute.

This means we now require rust 1.30 for the build.

4 years agocommon: Implement USB0 interrupt handler.
Tilman Sauerbeck [Tue, 18 Jun 2019 05:02:01 +0000 (07:02 +0200)]
common: Implement USB0 interrupt handler.

With this change, the device successfully registers as a USB ACM device
and doesn't hard fault if it's disconnected from USB.

4 years agocommon: Implement USB_DeviceIsrEnable() and USB_DeviceClockInit().
Tilman Sauerbeck [Mon, 17 Jun 2019 19:51:36 +0000 (21:51 +0200)]
common: Implement USB_DeviceIsrEnable() and USB_DeviceClockInit().

These functions are required by the C implementation.

4 years agobootloader: Initialize the usb_serial module on startup.
Tilman Sauerbeck [Mon, 17 Jun 2019 19:51:08 +0000 (21:51 +0200)]
bootloader: Initialize the usb_serial module on startup.

4 years agocommon: Add the usb_serial module.
Tilman Sauerbeck [Mon, 17 Jun 2019 19:49:15 +0000 (21:49 +0200)]
common: Add the usb_serial module.

Its init() function calls into the USB serial C code.

4 years agobootloader: Put the binary at offset 0x8000 in flash.
Tilman Sauerbeck [Mon, 17 Jun 2019 19:45:34 +0000 (21:45 +0200)]
bootloader: Put the binary at offset 0x8000 in flash.

This generates a binary that can be loaded as an application,
which allows for easy testing of the code.

4 years agocommon: Implement clock::configure_usb().
Tilman Sauerbeck [Mon, 17 Jun 2019 06:11:37 +0000 (08:11 +0200)]
common: Implement clock::configure_usb().

4 years agocommon: Set SIM_SOPT2.PLLFLLSEL by default.
Tilman Sauerbeck [Mon, 17 Jun 2019 06:05:55 +0000 (08:05 +0200)]
common: Set SIM_SOPT2.PLLFLLSEL by default.

At least the USB peripheral needs this, but probably others do, too.

4 years agobootloader: Configure system and peripheral clocks.
Tilman Sauerbeck [Mon, 17 Jun 2019 05:35:47 +0000 (07:35 +0200)]
bootloader: Configure system and peripheral clocks.

4 years agocommon: Add the clock module.
Tilman Sauerbeck [Mon, 17 Jun 2019 05:34:52 +0000 (07:34 +0200)]
common: Add the clock module.

So far this module only knows how to bring the system to PEE mode.

4 years agocommon: Remove unused code from usb_osa_bm.c.
Tilman Sauerbeck [Mon, 17 Jun 2019 04:48:43 +0000 (06:48 +0200)]
common: Remove unused code from usb_osa_bm.c.

4 years agocommon: Use asm instead of __ASM in USB_OsaEnterCritical().
Tilman Sauerbeck [Mon, 17 Jun 2019 04:44:40 +0000 (06:44 +0200)]
common: Use asm instead of __ASM in USB_OsaEnterCritical().

4 years agocommon: Implement __disable_irq() from CMSIS.
Tilman Sauerbeck [Mon, 17 Jun 2019 04:42:48 +0000 (06:42 +0200)]
common: Implement __disable_irq() from CMSIS.

4 years agocommon: Remove EnableIRQ() and DisableIRQ() from fsl_common.h.
Tilman Sauerbeck [Mon, 17 Jun 2019 04:41:47 +0000 (06:41 +0200)]
common: Remove EnableIRQ() and DisableIRQ() from fsl_common.h.

4 years agocommon: Remove useless calls to __NOP() in busy wait loops.
Tilman Sauerbeck [Mon, 17 Jun 2019 04:30:42 +0000 (06:30 +0200)]
common: Remove useless calls to __NOP() in busy wait loops.

4 years agocommon: Avoid including fsl_clock.h, clock_config.h and board.h.
Tilman Sauerbeck [Mon, 17 Jun 2019 04:24:44 +0000 (06:24 +0200)]
common: Avoid including fsl_clock.h, clock_config.h and board.h.

We won't need them.

4 years agocommon: Hardcode use of NXP's USB baremetal stack in usb_osa.h.
Tilman Sauerbeck [Sun, 16 Jun 2019 19:55:40 +0000 (21:55 +0200)]
common: Hardcode use of NXP's USB baremetal stack in usb_osa.h.

4 years agocommon: Avoid including core_cm0plus.h and system_MKL26Z4.h.
Tilman Sauerbeck [Sun, 16 Jun 2019 19:50:38 +0000 (21:50 +0200)]
common: Avoid including core_cm0plus.h and system_MKL26Z4.h.

Manually add the required functions and macros instead.

4 years agocommon: Hardcode our target's CPU type in fsl_device_registers.h.
Tilman Sauerbeck [Sun, 16 Jun 2019 19:46:40 +0000 (21:46 +0200)]
common: Hardcode our target's CPU type in fsl_device_registers.h.

4 years agocommon: Add NXP's USB serial code.
Tilman Sauerbeck [Sun, 16 Jun 2019 19:44:12 +0000 (21:44 +0200)]
common: Add NXP's USB serial code.

This does not yet build.

4 years agocommon: Add the nvic module.
Tilman Sauerbeck [Sun, 16 Jun 2019 19:10:48 +0000 (21:10 +0200)]
common: Add the nvic module.

Allows enabling and disabling of interrupts as well as configuring
their priority.

4 years agocommon: Add the register module.
Tilman Sauerbeck [Sun, 16 Jun 2019 19:05:58 +0000 (21:05 +0200)]
common: Add the register module.

Allows 8, 16 or 32 bit access to peripheral registers.

4 years agobootloader: Fix address of SRAM in the target.
Tilman Sauerbeck [Sun, 16 Jun 2019 18:31:44 +0000 (20:31 +0200)]
bootloader: Fix address of SRAM in the target.

4 years agobootloader: Remove linker symbols __Vectors_Size and __Vectors_End.
Tilman Sauerbeck [Sun, 16 Jun 2019 18:11:02 +0000 (20:11 +0200)]
bootloader: Remove linker symbols __Vectors_Size and __Vectors_End.

They aren't used.

4 years agobootloader: Remove commented support for multiple .data/.bss sections.
Tilman Sauerbeck [Sun, 16 Jun 2019 17:46:17 +0000 (19:46 +0200)]
bootloader: Remove commented support for multiple .data/.bss sections.

4 years agobuild: Add infrastructure for the bootloader program and libcommon.
Tilman Sauerbeck [Sun, 16 Jun 2019 17:18:09 +0000 (19:18 +0200)]
build: Add infrastructure for the bootloader program and libcommon.

This builds, but does not produce a useful binary.

4 years agoInitial commit.
Tilman Sauerbeck [Sun, 26 May 2019 18:35:02 +0000 (20:35 +0200)]
Initial commit.