Ceci est une ancienne révision du document !
Table des matières
Mini-Pix STM32F405VG
L'objectif est d'utiliser la carte Mini-Pix comme terrain de jeu et d'expérimentation sur la plateforme STM32.
Les données se trouvent ici.
Zephyrproject
Création de la board mini_pix
- Création du répertoire
zephyr/zephyr/boards/radiolink/mini_pix. - Copie d'un projet similaire (ici
zephyr/boards/weact/stm32f405_core). - Adaptation des noms (weact_stm32f405_core –> radiolink_mini_pix)
Adaptation de l'image pour MCUboot
L'objectif est de pouvoir remplacer le bootloader qui se trouve sur la carte. Histoire de pouvoir mettre à jour l'appli comme on veut.
Il faut rajouter les paramètres suivants dans le fichier zephyr/boards/radiolink/mini_pix/radiolink_mini_pix_defconfig
CONFIG_CLOCK_STM32_HSE_CLOCK=24000000 # enable MCUBoot CONFIG_BOOTLOADER_MCUBOOT=y CONFIG_MCUBOOT_GENERATE_UNSIGNED_IMAGE=y CONFIG_MCUBOOT_BOOTLOADER_MODE_OVERWRITE_ONLY=y
Il faut modifier le device tree zephyr/boards/radiolink/mini_pix/radiolink_mini_pix.dts
Changement de l'include du µC
[...] #include <st/f4/stm32f405vgtx-pinctrl.dtsi> [...]
Les partitions
[...]
soc {
flash-controller@40023c00 {
flash0: flash@8000000 {
partitions {
compatible = "fixed-partitions";
#address-cells = <0x1>;
#size-cells = <0x1>;
boot_partition: partition@0 {
reg = <0x0 0x10000>;
read-only;
};
storage_partition: partition@1e000 {
reg = <0x1e000 0x2000>;
};
slot0_partition: partition@20000 {
reg = <0x20000 0x60000>;
};
slot1_partition: partition@80000 {
reg = <0x80000 0x60000>;
};
scratch_partition: partition@e0000 {
reg = <0xe0000 0x20000>;
};
};
};
};
};
[...]
Dire sur quelle partition le code sera et quelle sera la console
[...]
chosen {
zephyr,console = &usart2;
zephyr,shell-uart = &usart2;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
zephyr,ccm = &ccm0;
};
[...]
Changement de la fréquence
[...]
&clk_hse {
clock-frequency = <DT_FREQ_M(24)>;
status = "okay";
};
&pll {
div-m = <24>;
mul-n = <336>;
div-p = <2>;
div-q = <7>;
clocks = <&clk_hse>;
status = "okay";
};
&rcc {
clocks = <&pll>;
clock-frequency = <DT_FREQ_M(168)>;
ahb-prescaler = <1>;
apb1-prescaler = <4>;
apb2-prescaler = <2>;
};
[...]
les leds
[...]
leds: leds {
compatible = "gpio-leds";
led: led_0 {
gpios = <&gpioc 5 GPIO_ACTIVE_HIGH>;
label = "User LED";
};
boot_led: led_1 {
gpios = <&gpiob 1 GPIO_ACTIVE_HIGH>;
label = "Bootloader LED";
};
};
[...]
le port série
[...]
&usart2 {
pinctrl-0 = <&usart2_tx_pd5 &usart2_rx_pd6>;
pinctrl-names = "default";
current-speed = <115200>;
status = "okay";
};
[...]
MCUboot
MCUboot est le bootloader officiel du projet Zephyr.
il faut aller dans le réperoire zephyr/bootloader/mcuboot/boot/zephyr
Pour faire une config jolie:
west build -t menuconfig
Il faut configurer les trucs suivants:
CONFIG_BOOT_USB_DFU_WAIT=y # CONFIG_BOOT_USB_DFU_GPIO is not set CONFIG_BOOT_USB_DFU_WAIT_DELAY_MS=12000 CONFIG_BOOT_USB_DFU_NO_APPLICATION=y CONFIG_MCUBOOT_INDICATION_LED=y CONFIG_USB_DEVICE_DRIVER=y CONFIG_USB_DEVICE_VID=0x0483 CONFIG_USB_DEVICE_PID=0xdf11 CONFIG_USB_DEVICE_MANUFACTURER="FOUE"
Flasher MCUboot
Il faut passer en mode DFU sur la Mini-Pix en mettant la pin 94 (BOOT0) à 3.3V.
Ensuite, dans zephyr/bootloader/mcuboot/boot/zephyr/build/zephyr
dfu-util -a 0 -s 0x08000000:leave -D zephyr.bin
