Jump to content

    

GenaSPB

Участник
  • Content Count

    1773
  • Joined

  • Last visited

Community Reputation

0 Обычный

About GenaSPB

  • Rank
    Профессионал
  • Birthday 03/02/1964

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Санкт-Петербург, Россия

Recent Profile Visitors

18281 profile views
  1. Настройка USB_HOST в CUBE

    Впишите в нужное место свой код. Там все для этого есть.
  2. Про защрту от рекурсии при подстановке которая почему-то оказалась в вашем компиляторе ответ лучше искать в стандарте языка где говорится об правилах работы препроцессора.
  3. STM32MP1 - bare metal

    Спасибо... но с бареметал там еще не срослось.
  4. STM32H7 SDMMC

    IDMA? У нас тут H7 фигурирует. Интересно, как Вы это сделаете. А с выравниванием еще из соображений DataCache лучше.
  5. STM32MP1 - bare metal

    Backa, можете ссылку дать? А то мне в разделе arm только темы от евгения в феврале-марте этого года с первыми возгласами после появления чипа найти получается....
  6. STM32H7 SDMMC

    а всего-то надо в FatFS обеспечить выравнивание внутренних данных в структуре и самой её. Я в своем проекте обеспечил так: typedef FATFSALIGN_BEGIN struct { BYTE fs_type; /* Filesystem type (0:N/A) */ BYTE pdrv; /* Physical drive number */ BYTE n_fats; /* Number of FATs (1 or 2) */ BYTE wflag; /* win[] flag (b0:dirty) */ BYTE fsi_flag; /* FSINFO flags (b7:disabled, b0:dirty) */ WORD id; /* Volume mount ID */ WORD n_rootdir; /* Number of root directory entries (FAT12/16) */ WORD csize; /* Cluster size [sectors] */ #if FF_MAX_SS != FF_MIN_SS WORD ssize; /* Sector size (512, 1024, 2048 or 4096) */ #endif #if FF_USE_LFN WCHAR* lfnbuf; /* LFN working buffer */ #endif #if FF_FS_EXFAT BYTE* dirbuf; /* Directory entry block scratchpad buffer for exFAT */ #endif #if FF_FS_REENTRANT FF_SYNC_t sobj; /* Identifier of sync object */ #endif #if !FF_FS_READONLY DWORD last_clst; /* Last allocated cluster */ DWORD free_clst; /* Number of free clusters */ #endif #if FF_FS_RPATH DWORD cdir; /* Current directory start cluster (0:root) */ #if FF_FS_EXFAT DWORD cdc_scl; /* Containing directory start cluster (invalid when cdir is 0) */ DWORD cdc_size; /* b31-b8:Size of containing directory, b7-b0: Chain status */ DWORD cdc_ofs; /* Offset in the containing directory (invalid when cdir is 0) */ #endif #endif DWORD n_fatent; /* Number of FAT entries (number of clusters + 2) */ DWORD fsize; /* Size of an FAT [sectors] */ DWORD volbase; /* Volume base sector */ DWORD fatbase; /* FAT base sector */ DWORD dirbase; /* Root directory base sector/cluster */ DWORD database; /* Data base sector */ DWORD winsect; /* Current sector appearing in the win[] */ FATFSALIGN_BEGIN BYTE win[FF_MAX_SS] FATFSALIGN_END; /* Disk access window for Directory, FAT (and file data at tiny cfg) */ } FATFSALIGN_END FATFS; /* File object structure (FIL) */ typedef FATFSALIGN_BEGIN struct { FFOBJID obj; /* Object identifier (must be the 1st member to detect invalid object pointer) */ BYTE flag; /* File status flags */ BYTE err; /* Abort flag (error code) */ FSIZE_t fptr; /* File read/write pointer (Zeroed on file open) */ DWORD clust; /* Current cluster of fpter (invalid when fptr is 0) */ DWORD sect; /* Sector number appearing in buf[] (0:invalid) */ #if !FF_FS_READONLY DWORD dir_sect; /* Sector number containing the directory entry (not used at exFAT) */ BYTE* dir_ptr; /* Pointer to the directory entry in the win[] (not used at exFAT) */ #endif #if FF_USE_FASTSEEK DWORD* cltbl; /* Pointer to the cluster link map table (nulled on open, set by application) */ #endif #if !FF_FS_TINY FATFSALIGN_BEGIN BYTE buf[FF_MAX_SS] FATFSALIGN_END; /* File private data read/write window */ #endif } FATFSALIGN_END FIL; У меня с GCC так: #define FATFSALIGN_BEGIN __attribute__ ((aligned (32))) #define FATFSALIGN_END /* nothing */
  7. STM32MP1 - bare metal

    4.3 Boot from SD SD cards contain two versions of FSBL. The ROM code tries to load and launch the first copy. In case of failure, it then try to load the second copy. The ROM code first looks for a GPT. If it finds it, it locates two FSBLs by looking for the two first GPT entries which name begins with "fsbl". If it cannot find a GPT, the ROM code looks for FSBL1 at offset LBA34 and FSBL2 at offset LBA546.
  8. STM32MP1 - bare metal

    Опуская несколько промежуточных шагов. Берем запускающийся Linux имедж карты. Видим GPT раздел с названием fsbl1 (First Stage Boot Loader). В начальном секторе располагается как и у меня заголовок бинарника. Заменяю своим. С SD продолжает грузиться Linux... x893, спасибо.
  9. STM32MP1 - bare metal

    Не. С такого на sd card не грузится. Не видит карту загрузчик. Посмотрел чужие образы и увидел сигнатуру UEFI
  10. STM32MP1 - bare metal

    Вот тут лежит файл - прошить в QSPI или скопировать в начало SD-карты (не в файловую систему). Должен часто (около 10 раз в секунду) шевелить PA14 - зеленый светодиод на DK1/DK2. Надеюсь у кого-нибудь запустится. #if CPUSTYLE_STM32MP1 { // LED blinking test const uint_fast32_t mask = (1uL << 14); // PA14 for (;;) { arm_hardware_pioa_outputs(mask, 1 * mask); local_delay_ms(50); arm_hardware_pioa_outputs(mask, 0 * mask); local_delay_ms(50); } } #endif /* CPUSTYLE_STM32MP1 */
  11. STM32MP1 - bare metal

    А вот и решение... https://github.com/ARM-software/arm-trusted-firmware/blob/master/tools/stm32image/stm32image.c
  12. STM32MP1 - bare metal

    Что-то напоминающее: https://wiki.st.com/stm32mpu/wiki/STM32_header_for_binary_files
  13. STM32MP1 - bare metal

    Попытки дистанционно запустить что-то на DK2 через SD CARD пока неудачны. В Краснодаре есть возможность. Кстати еще вопрос по BOOT с SD CARD: сколько первых секторов и куда грузятся в этом режиме и какое ядро начинает выполнять загруженный образ.
  14. STM32MP1 - bare metal

    на dk1 qspi не распаян... У тебя есть она в железе?
  15. STM32MP1 - bare metal

    Так, начнем с начала. Предположим, выбрано BOOT MODE Serial NAND Flash on QUADSPI - какое ядро начинает исполнять код из области памяти, на которую отображен QSPI? Как это управляется?