====PineTime - 01/03/22 - 13:00==== https://wiki.pine64.org/wiki/PineTime **This document is very much a work in progress, None of it is warranted as Correct, Accurate or Optimal.. Suggestions very welcome.** ** Requirements ** *PineTime Dev kit *ST-Link programmer *POGO Pin connector for ST-LINK or soldering skills ** Setup OpenOCD to use the ST-Link ** Triple check the wiring! The wiring on this page is misleading https://github.com/InfiniTimeOrg/InfiniTime/blob/develop/doc/openOCD.md Better wiring info here https://wiki.pine64.org/wiki/PineTime_Devkit_Wiring ** Simple Updater - To check ST-Link is working ** https://github.com/lupyuen/pinetime-updater cd ~/Documents/PineTime/pinetime-updater ./run.sh ====Build tools and Flash Setup==== https://github.com/InfiniTimeOrg/InfiniTime/blob/develop/doc/buildAndProgram.md Dependencies Environment setup Install ** CMake - Build make configurations ** cd ~/Documents/PineTime/InfiniTime/build cmake -DARM_NONE_EABI_TOOLCHAIN_PATH=/opt/gcc-arm-none-eabi-9-2020-q2-update/ -DNRF5_SDK_PATH=/opt/nRFSDK -DUSE_OPENOCD=1 ../ sudo apt-get install ninja-build sudo apt-get install ninja-build Seems to ignore ST-Link flags(?) ** Make - Build the firmware with the support of the bootloader (based on MCUBoot) ** https://github.com/InfiniTimeOrg/InfiniTime/blob/develop/bootloader/README.md make -j pinetime-mcuboot-app ** Flash Config File - flash_bootloader_app.ocd ** init program /home/nicolas/Documents/PineTime/InfiniTime/build/src/pinetime-mcuboot-app-image-1.8.0.bin verify 0x00008000 reset ** Flash ** cd ~/Documents/PineTime sudo openocd -f ./openocd-stlink.ocd -f ./flash_bootloader_app.ocd ====Development==== https://docs.infinitime.io/en/latest/developer-documentation/index.html#how-to-implement-an-app **Github Cloud Build** With the build working locally from the command line I tried this Github cloud build. Note these articles are old and things have moved on. https://lupyuen.github.io/pinetime-rust-mynewt/articles/cloud#add-github-actions-to-our-fork I used the develop work flow main.yml on my fork, all runs well. For the time being I will build locally with VSCode. nRF Connect For Mobile app to upload the DFU file or use GadgetBridge. **VSCode Setup** https://github.com/InfiniTimeOrg/InfiniTime/blob/develop/doc/buildWithVScode.md pip3 install --user adafruit-nrfutil Ensure the MCUBoot python tools are already installed **Cmake tools extension configuration** run chmod u+x YourScriptFileName.sh Cmake: Configure Environment Environment variables to pass to CMake during configure. ARM_NONE_EABI_TOOLCHAIN_PATH /opt/gcc-arm-none-eabi-9-2020-q2-update NRF5_SDK_PATH /opt/nRFSDK **C_cpp_properties.json** "compilerPath": "/opt/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc", **Build** Successfully builds from VSCode ====Simulator Setup==== https://github.com/InfiniTimeOrg/InfiniSim Build simulator version cd ~/Documents/PineTimeSim/InfiniSim cmake -S . -B build cmake --build build -j4 --clean-first # Clean first if needed Run simulator ./build/infinisim --hide-status Commands Left mouse button: simulates your finger, just click to tap, click and drag to swipe Right mouse button: simulates the hardware button (for example turn the screen off or on again) Using the keyboard the following events can be triggered: *r ... enable ringing *R ... disable ringing *m ... let motor run for 100 ms *M ... let motor run for 255 ms *n ... send notification *N ... clear all notifications *b ... connect Bluetooth *B ... disconnect Bluetooth *v ... increase battery voltage and percentage *V ... decrease battery voltage and percentage *c ... charging, *C ... not charging *l ... increase brightness level *L ... lower brightness level *p ... enable print lvgl memory usage to terminal *P ... disable print memory usage *s ... increase step count by 500 steps *S ... decrease step count by 500 steps *h ... set heartrate running, and on further presses increase by 10 bpm *H ... stop heartrate ====Run Simulator from VSCode==== Install Ninja sudo apt-get install ninja-build Revise VSCode build script - Notes to be added. F7 compiles the project F5 launches the simulator ----- **Next** *Debugging? *Multiple BLE connections? Handling of BLE messages *Make hard wired powered dev board? ==== Development Notes==== InfiniTime uses LVGL Dev 7.11 Repo https://github.com/lvgl/lvgl/tree/release/v7 Doc https://docs.lvgl.io/7.11/widgets/label.html cd ~/Documents/PineTimeSim/InfiniSim/InfiniTime Notes to be looked at! Linux BLE daemon https://gitea.arsenm.dev/Arsen6331/itd [T] pinetime-mcuboot-app.bin is different from pinetime-mcuboot-app-image.bin, the latter contains a header which is needed to boot using the bootloader [T] pinetime-app.bin however you can flash at 0x0 and it replaces/skips the bootloader, nice fast debugging! [T] You can flash the former at 0x0 and boot without the bootloader but it won't boot if flashed at 0x8 [T] Thx mate, perfect (re @KieranC: [M] > <@p64protocolbot4:matrix.org> [T] Forwarded from KieranC: I'm doing openocd -f interface/stlink.cfg -f target/nrf52.cfg -c 'init' -c 'program bootloader.bin' -c 'reset' then openocd -f interface/stlink.cfg -f target/nrf52.cfg -c 'init' -c 'program src/pinetime-mcuboot-app-1.6.0.bin' -c 'reset' You need to flash a file called pinetime