11-22-2020, 04:58 AM
Hi @lookin, Congratulations for your PineTime and your first achievements with wasp-os and InfiniTime
Wow, you tried a lot of things to build and customize your own InfiniTime firmware. The documentation of the project is certainly not complete/clear enough, I'll try to give you more information about all of it
Toolchain & NRF SDK
I recommend you use exactly the same version than the one specified in the project documentation. The compiler from your distro might be older or newer than the one I use to test InfiniTime, and might yield other warnings/errors.
Same for the NRF SDK. I use version 15.3 and you use version 17. I think NRF follows the semantic versioning, meaning that there can be many breaking changes between 2 different major versions of the SDK. To be honest, I'm surprised that it compiled without errors.
Boot logo
The bootloader fetches the boot logo from the external SPI memory. It does not support PNG or any compressed format. The byte array must contain a raw bitmap of RGB565 pixels (115200 bytes). I recommend you use this converter tool fro lvgl to convert your picture into a byte array.
Then, you need to actually flash it in this external SPI flash memory. You're right, pinetime-graphics is the tool you should use but... It is not designed to be flashed and run by the bootloader. The only way to use this tool is to flash it using a SWD flasher, run it, and then re-flash the bootloader and InfiniTime (yes, pinetime-graphics will overwrite the bootloader and the firmware).
When you tried to OTA this firmware, the bootloader actually tried to run it, but it didn't run properly, the watchdog reset the CPU and MCUBoot reverted to the last working firmware. You've actually validated that the bootloader does its job correctly
Building your own InfiniTime firmware
I think you were mostly right about this part, pinetime-app-0.9.0.bin is the firmware version that does not support the bootloader. You should use pinetime-mcuboot-app-0.9.0.bin instead.
You can easily check that your build is running by opening the SystemInfo app once InfiniTime is running, it displays the date and time of the build.
Changing the month names
The clock app does not use lv_calendar so your changes won't have any effects. The constants that are displayed are defined in Clock.cpp (src/displayapp/screens/Clock.cpp).
I hope these info will help you building and flashing InfiniTime on your device! Feel free to ask more info here or on the chat rooms (all networks are bridged, so you can choose the one you prefer, every one will see your messages).
Wow, you tried a lot of things to build and customize your own InfiniTime firmware. The documentation of the project is certainly not complete/clear enough, I'll try to give you more information about all of it
Toolchain & NRF SDK
I recommend you use exactly the same version than the one specified in the project documentation. The compiler from your distro might be older or newer than the one I use to test InfiniTime, and might yield other warnings/errors.
Same for the NRF SDK. I use version 15.3 and you use version 17. I think NRF follows the semantic versioning, meaning that there can be many breaking changes between 2 different major versions of the SDK. To be honest, I'm surprised that it compiled without errors.
Boot logo
The bootloader fetches the boot logo from the external SPI memory. It does not support PNG or any compressed format. The byte array must contain a raw bitmap of RGB565 pixels (115200 bytes). I recommend you use this converter tool fro lvgl to convert your picture into a byte array.
Then, you need to actually flash it in this external SPI flash memory. You're right, pinetime-graphics is the tool you should use but... It is not designed to be flashed and run by the bootloader. The only way to use this tool is to flash it using a SWD flasher, run it, and then re-flash the bootloader and InfiniTime (yes, pinetime-graphics will overwrite the bootloader and the firmware).
When you tried to OTA this firmware, the bootloader actually tried to run it, but it didn't run properly, the watchdog reset the CPU and MCUBoot reverted to the last working firmware. You've actually validated that the bootloader does its job correctly
Building your own InfiniTime firmware
I think you were mostly right about this part, pinetime-app-0.9.0.bin is the firmware version that does not support the bootloader. You should use pinetime-mcuboot-app-0.9.0.bin instead.
You can easily check that your build is running by opening the SystemInfo app once InfiniTime is running, it displays the date and time of the build.
Changing the month names
The clock app does not use lv_calendar so your changes won't have any effects. The constants that are displayed are defined in Clock.cpp (src/displayapp/screens/Clock.cpp).
I hope these info will help you building and flashing InfiniTime on your device! Feel free to ask more info here or on the chat rooms (all networks are bridged, so you can choose the one you prefer, every one will see your messages).
Working on InfiniTime, the FOSS firmware for the PineTime: https://github.com/InfiniTimeOrg/InfiniTime
Mastodon : https://mastodon.codingfield.com/@JF
Twitter : https://twitter.com/codingfield
Matrix : @JF002:matrix.org
Mastodon : https://mastodon.codingfield.com/@JF
Twitter : https://twitter.com/codingfield
Matrix : @JF002:matrix.org