YazawaKenichi / murakumo_ws

0 stars 0 forks source link

[Tasks] 今日のタスク #29

Closed YazawaKenichi closed 1 year ago

YazawaKenichi commented 1 year ago

今日のタスクリスト

YazawaKenichi commented 1 year ago

FLASH.ld の、FLASH (rx) の項目で LENGTH の量を減らす必要がある。

YazawaKenichi commented 1 year ago

HAL446 を用いて FLASH の書き込みテストをしようとしているが、Flash 系統の処理を main 内に入れると想定通りの LED の点滅が起こらなくなり、シリアル出力も応答されていない状態になってしまう。

FLASH 系統の処理をコメントアウトしたところ想定通りの LED とシリアル出力を得ることができたので、FLASH 系統の処理に問題がありそう。

YazawaKenichi commented 1 year ago

FLASH.ld の、FLASH (rx) の項目で LENGTH の量を減らす必要がある。

問題なかった。ちゃんと適切な量に減らされていた。

YazawaKenichi commented 1 year ago

本来 flash_write()flash_read() の引数は ‘FLASH_SECTOR_num` を指定する必要があるのに

flash_write_all()flash_read_all() の内部では FLASH_SECTOR_num_START_ADDRESS を指定していた。

これは正しく動くはずがない...

YazawaKenichi commented 1 year ago

動作実現までに確認した事項

  1. アドレスが正しいかどうか
    1. Reference Manual を見て正しくマクロが設定されているかを確認する
    2. 設定されたマクロが正しく使用されているかを確認する
  2. printf が正しく使用できるかどうか
    1. Hello, World! を出力させた
  3. flash_read/write() の引数が正しく指定されているかどうか
    1. 関数が使用されている箇所を検索して一つ一つ確認する
  4. FLASH_SECTOR_num がそもそも定義されているかどうか
    1. 正しくは Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h で定義されているはずなので確認する
  5. sector 引数と FLASH_SECTOR_num の型変換でデータの損失が起きていないかどうか
    1. 例えば Sector 5 は #define FLASH_SECTOR_5 5U で定義されていて unsigned 5 が実際の値となるが、sector 変数は正しく受け取ることができているか確認する
YazawaKenichi commented 1 year ago
  1. アドレスが正しいことは確認した
  2. printf が正しくされていないかも(詳しくは後述)
  3. 関数の引数が正しく指定されていることも確認した
  4. データ損失も起きてなさそう
    1. むしろ大きくなってて、unsigneduint32_t に変換されてたから unsigned にそろえた
YazawaKenichi commented 1 year ago

なんか flash print の playmode にして得られる標準出力関数が全部 course print flash になってたけど大丈夫なん?

YazawaKenichi commented 1 year ago

嘘。大丈夫だった。

course_flash_print() 内でちゃんとモードに応じて出力内容変わるようになってた

YazawaKenichi commented 1 year ago
YazawaKenichi commented 1 year ago

memo

  1. analog
  2. encoder
  3. imu
  4. course
YazawaKenichi commented 1 year ago

必要な時に必要なセクタだけ書き換えるように処理を書き直したのでこれで実行してみたいところ