Main MCU Firmware

Chase Lighting (Elf Membership Card test program)

Copyright

Peter Schmid, Switzerland, peter@spyr.ch

This file is part of "Velo Bling-Bling" main MCU firmware.

"Velo Bling-Bling" firmware is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

"Velo Bling-Bling" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with "Velo Bling-Bling". If not, see http://www.gnu.org/licenses/.

Tools

Kinetis Design Studio Integrated Development Environment (IDE)

The Kinetis Design Studio (KDS) is a complimentary integrated development environment for Kinetis MCUs that enables robust editing, compiling and debugging of your designs. Based on free, open-source software including Eclipse, GNU Compiler Collection (GCC), GNU Debugger (GDB), and others, the Kinetis Design Studio IDE offers designers a simple development tool with no code-size limitations.

You have to use an old Version (2.0.0, current is 3.2.0) for the veloblingbling project because the Processor Expert USB Stack does not work with newer Kinetis Design Studio Integrated Development Environment.

Processor Expert Software and Embedded Components

Processor Expert Software is a development system to create, configure, optimize, migrate, and deliver software components that generate source code for our (Freescale/NXP) silicon.

Unfortunately the Processor Expert USB Stack v4.1.1 NXP bare metal (no OS) USB Stack is no longer supported. But you can still find it under (ARCHIVED) USB Stack. You need a Windows PC to install, but the Processor Expert components can be used for Linux boxes too, the PEupd files are in the directory C:\Freescale\Freescale USB Stack v4.1.1\ProcessorExpert\Components and have to be imported into the KDS IDE: Processor Expert -> Import Components.

I will migrate the Velo Bling-Bling USB software from Freescale USB Stack v4.1.1 to Erich Styger's USB Stack.

Debug Adapter

The KDS supports following adapters (protocols):

  • OpenSDA Serial and Debug Adapter (proprietary Freescale/NXP/P&E Microcomputer Systems)
  • Segger (industrial standard)
  • OpenOCD,

I propose to use a Freescale/NXP Freedom Board e.g. FRDM-K22F as a debug adapter. I use the OpenOCD/CMSIS-DAP/mbed-interface protocol (factory set on FRDM-K22F).

Quote from Freedom Board for Kinetis K22F Hardware (FRDM-K22F), Users Guide

3.2.1 Debug interface

Signals with SPI and GPIO capability are used to connect directly to the SWD of the K22F. These signals are also brought out to a standard 10-pin (0.05”) Cortex debug connector (J11). It is possible to isolate the K22F MCU from the OpenSDAv2 circuit and use J11 to connect to an off-board MCU. To accomplish this, cut the trace on the bottom side of the PCB that connects J7 pin 2 to J11 pin 4. This will disconnect the SWD_CLK pin to the K22F so that it will not interfere with communication to an off-board MCU connected to J7. The J11 header is populated by default. A mating cable, such as a Samtec FFSD IDC cable, can then be used to connect from the OpenSDAv2 of the FRDM-K22F to an off-board SWD connector.

You can still use the FRDM-K22F as a prototype board. You should solder a pinheader and plug a jumper if you want to use the FRDM-K22F as a prototype board.

See also an excellent introduction to OpenOCD/CMSIS-DAP Debugging by Erich Styger.

Get the Software and Import the Project into the IDE

Get the Source from the Repository

The Velo Bling-Bling Kinetis project is on the GitHub repository https://github.com/spyren/veloblingbling-mcu. Download the ZIP-File and unzip it or better clone the repository e.g. for GNU/Linux:
psi@homer:~/veloblingbling/mcu> git clone https://github.com/spyren/veloblingbling-mcu
Klone nach 'veloblingbling-mcu' ...
remote: Counting objects: 265, done.
remote: Compressing objects: 100% (97/97), done.
remote: Total 265 (delta 167), reused 260 (delta 166), pack-reused 0
Empfange Objekte: 100% (265/265), 223.50 KiB | 0 bytes/s, Fertig.
Löse Unterschiede auf: 100% (167/167), Fertig.
Prüfe Konnektivität ... Fertig.
psi@homer:~/veloblingbling/mcu>

Import the Project into the IDE

File -> Import -> General -> Existing Projects into Workspace ->
Select root directory
Copy project into workspace
Browse to veloblingbling/mcu directory
Finish

I don't know why, but I had to change the Processor Expert system directory:
Window -> Preferences -> Processor Expert -> Paths
system directory /opt/Freescale/KDS_2.0.0/eclipse/ProcessorExpert

MCU MK22DX256VLF5

  • Data sheets
  • Features
    • Core ARM Cortex M4, 50 MHz
    • Run mode current 17 mA, wait 8 mA
    • A/D Converter - Bits (bit) 16
    • Additional Features Vref
    • Ambient Operating Temperature (Min-Max) (°C) -40 to 105
    • Analog Comparator 2
    • Cache (kB) 0
    • Debug Features JTAG, Serial Wire Debug, cJTAG
    • EEPROM (kB) 4
    • External Bus Interface n/a
    • FlexMemory (KB) 64
    • I/O Pins 29
    • Independent ADC modules 1
    • Internal Flash (kB) 256
    • Internal RAM (kB) 32
    • Max Simultaneous ADC channels 1 DP14 SE
    • Pulse Width Modulators - Channels 10
    • Sample Exception Availability Y
    • Serial Interface - Number of Interfaces 4
    • Serial Interface - Type UART, SPI, I2C, I2S
    • USB OTG LS/FS
    • Supply Voltage (Min-Max) (V) 1.71 to 3.6
    • Timer type Low Power Timer, Periodic Interrupt Timer, Programmable Delay Block
    • Total DMA Channels 16
    • Total Flash memory (kB) 320
    • LQFP-48

The MK20DX128VLF5 can also be used, but the memory footprint (Flash and RAM) has to be reduced. The MKL27Z256VFT4 would be an excellent alternative (build-in bootloader, 8 mA run mode current with peripherals, 4 mA wait mode current), but the case is QFN48 and therefore you have to change the PCB layout.

Chase Lighting (Elf Membership Card test program)

0000   C0   LBR MOVE
0001   00
0002   03   

MOVE:
0003   E3   SEX R3      ; index register R3 for bit pattern point to 30H
0004   90   GHI R0       ; PC high byte is 0
0005   B3   PHI R3
0006   F8   LDI 30H
0007   30
0008   A3   PLO R3

0009   F8   LDI 00000001B   ; bit pattern to move in (0030H)
000A   01
000B   53   STR R3
LOOP:
000C   64   OUT4      ; Rx = 0030H, INC Rx
000D   6C   INP4      ; get switches Rx =0031H
000E   23   DEC R3      ; Rx = 0030H
000F   FA   ANI 11111110B
0010   FE
0011   3A   BNZ LEFT
0012    1A
RIGHT:
0013   F0   LDX      ; get pattern
0014   F6   SHR
0015   C7   LSNF
0016   F8   LDI 10000000B
0017   80   
0018   30   BR  STORE
0019   1F
LEFT:
001A   F0   LDX      ; get pattern
001B   FE   SHL
001C   C7   LSNF
001D   F8   LDI 00000001B
001E   01
STORE:
001F   53   STR R3

0020   F8   LDI 20
0021   14
0022   B2   PHI R2      ; R2 wait counter
WAIT:
0023   22   DEC R2      ; wait loop about 0.5 s
0024   92   GHI R2
0025   3A   BNZ WAIT
0026   23

0027   C5   LSNQ      ; toggle Q
0028   7A   REQ
0029   38   NBR
002A   7B   SEQ
002B   30   BR LOOP   
002C   0C      

-- Peter Schmid - 2017-11-18

Comments

Edit | Attach | Watch | Print version | History: r9 | r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r3 - 2017-12-17 - PeterSchmid
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback