Например TDA7294

Форум РадиоКот • Просмотр темы - Программирование микроконтроллеров компании Fudan в Keil
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 21, 2025 19:55:27

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Вт дек 16, 2025 19:26:41 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
Здравствуйте! Данные вопросы относятся к микроконтроллеру FM33A048EV на Cortex-M0 процессоре. Я никогда ранее не пользовался средой Кейл, но вот нужно подключить экран к этому контроллеру и более подходящего варианта я не нашел. По итогам того, к чему я пришел, при попытке отладки, отладчик запускается, но если сделать шаг выдает ошибку JLink - Cortex-M Error. Что может быть причиной данной ошибки? Программа судя по логу в в чип загружается
Код:
Load "C:\\Projects\\keil\\FM33ADisp\\test.axf"
* JLink Info: Device "CORTEX-M0" selected.
Set JLink Project File to "C:\Projects\keil\FM33ADisp\JLinkSettings.ini"
* JLink Info: Device "CORTEX-M0" selected.
 
JLink info:
----------
DLL: V7.82 , compiled Oct 13 2022 13:32:51
Firmware: J-Link V11 compiled Apr  1 2025 10:02:30
Hardware: V11.00
S/N : 603000869
Feature(s) : RDI, FlashBP, FlashDL, JFlash, GDB
 
* JLink Info: Found SW-DP with ID 0x0BB11477
* JLink Info: DPIDR: 0x0BB11477
* JLink Info: CoreSight SoC-400 or earlier
* JLink Info: Scanning AP map to find all available APs
* JLink Info: AP[1]: Stopped AP scan as end of AP map has been reached
* JLink Info: AP[0]: AHB-AP (IDR: 0x04770021)
* JLink Info: Iterating through AP map to find AHB-AP to use
* JLink Info: AP[0]: Core found
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLink Info: CPUID register: 0x410CC300. Implementer code: 0x41 (ARM)
* JLink Info: Unknown core, assuming Cortex-M0
* JLink Info: Found Cortex-M0 r0p0, Little endian.
* JLink Info: FPUnit: 4 code (BP) slots and 0 literal slots
* JLink Info: CoreSight components:
* JLink Info: ROMTbl[0] @ E00FF000
* JLink Info: [0][0]: E000E000 CID B105E00D PID 000BB00D ???
* JLink Info: [0][1]: E0001000 CID B105E00D PID 000BB00A DWT
* JLink Info: [0][2]: E0002000 CID B105E00D PID 000BB00B FPB
ROMTableAddr = 0xE00FF000
* JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
* JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
 
Target info:
----------
Device: FM33A04XEV
VTarget = 3.348V
State of Pins:
TCK: 1, TDI: 1, TDO: 0, TMS: 1, TRES: 1, TRST: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
Watchpoints:          1
JTAG speed: 5 kHz
 
Full Chip Erase Done.
Programming Done.
Verify OK.
* JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
* JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Application running ...
Flash Load finished at 16:20:03



Так же настроил пин PG6 на высокий уровень, но на этом пине никаких движений не происходит.
Код:
#include "init.h"
#include <stdint.h>
//#pragma GCC diagnostic ignored "-Wgnu-binary-literal"

void INIT(void){
   rcc();
   gpio();
   
}

void rcc(void){
   CMU->RCHFCR |= (0x1U << 8); // 16MHz
   CMU->RCHFCR |= 0x1U; // RCHF enable
   for(uint8_t i = 0; i < 255; i++);
   CMU->SYSCLKCR &=~ 0x7U; // SysClk -- RCHF
   //GPIO->FOUTSEL |= 0xBU; //Fout0 (PG6)
}

void gpio(void){
    //--- PORTG ---//
   //GPIOG->FCR |= (0x2U << 12); // PG6 -- digital function
   //GPIOG->DFS |= (0x1U << 6); // Fout
   GPIOG->PUEN |= (1 << 6);
   GPIOG->FCR |= (0x01U << 12);
   GPIOG->DSET |= (1 << 6);
   
}


Может кто-то имел дело с этими или похожими МК и поможет мне разобраться, что я делаю не так. Буду премного благодарен:)


Изображение Изображение Изображение Изображение Изображение Изображение Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Ср дек 17, 2025 20:50:45 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1659
Рейтинг сообщения: 0
Может кто-то имел дело с этими или похожими МК
С этими МК и с Кейл дел не имел, но первое что бросается в глаза: почему "max.clock" стоит = 5kHz? Это очень мало. Я обычно ставлю не менее 4 МГц (хотя работаю с более старшими ядрами чем CM0).
Также лучше сразу в начале отладочной сессии (ещё до всяких шаганий) ещё и своими глазами убедиться, что прошивка реально прошилась в чип (открыв окно "Memory", перейдя в нём на начало флешь и глазами сравнив данные там с содержимым своего файла прошивки).

Добавлено after 5 minutes 34 seconds:
По итогам того, к чему я пришел, при попытке отладки, отладчик запускается, но если сделать шаг выдает ошибку JLink - Cortex-M Error. Что может быть причиной данной ошибки?
Что происходит после старта отладочной сессии? Показывает окошко с кодом и с точкой в которой сейчас находится PC? (остановленный)
Причиной сбоев после загрузки может быть внезапно прилетевший на контроллер RESET. От WDT или по питанию или ещё от чего-то. Или какие-то другие проблемы с соединением эмулятора с отлаживаемым МК. Или с питанием.

Программа судя по логу в в чип загружается
Это лучше проверить своими глазами. По окошку "Memory".
Тем более что и галки "Download to Flash" и "Verify Code Download" на последнем скрине у вас почему-то сняты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Чт дек 18, 2025 20:14:16 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
Спасибо за ответ! 5кГц это я менял разные скорости. Сейчас поставил 5МГц, ничего не изменилось


Изображение Изображение Изображение Изображение Изображение Изображение Изображение

Добавлено after 25 minutes 50 seconds:
jcxz,

Добавлено after 6 minutes 5 seconds:
Изображение

Добавлено after 3 minutes 52 seconds:
Изображение

Добавлено after 32 minutes 1 second:
Пересоздал проект. Память вроде программируется корректно. С адреса 0x0 Изображение

Вот структура проекта и код
Изображение

Окно отладчика когда я только в него вошёл. Почему то сразу запущен. Если остановить (на красный кружок с белым крестиком) он остановится но шаги не работают. Ничего не происходит. Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Чт дек 18, 2025 20:20:11 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт фев 28, 2017 08:13:31
Сообщений: 74
Откуда: Свердловская обл.
Рейтинг сообщения: 0
для начала поставь галки - так

Изображение

Изображение


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Чт дек 18, 2025 20:34:36 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
Zikon, да, вот я позже пприсылал скриншоты там уже стоят как вы написали

Добавлено after 5 minutes 26 seconds:
Zikon, сейчас при входе в отладчик сразу код идёт, или что, доступна кнопка STOP. Если нажать ее выделяются некоторые регистры синим, и всё. Шаги не делает, а если нажать Run to cursor line опять запускается и всё. Изображение Изображение Изображение Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Чт дек 18, 2025 20:46:29 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт фев 28, 2017 08:13:31
Сообщений: 74
Откуда: Свердловская обл.
Рейтинг сообщения: 0
что за белый кружок с красным крестиком, и зачем его в отладчике нажимать

запускаем отладку и должен сразу
на main() перейти и в си коде и в асм коде
и дальше шагаем

Добавлено after 2 minutes 36 seconds:
шаги делаем и при изменении - жёлтая стрелочка перемещается
синие регистры - те которые изменились при шаге или шагах

может ещё зависит шаг в каком окне находишься

и как-то си программу там шаги странно работают
я больше асм отлаживаю немного

в настройках можно в закладке Debug
убрать галочку Run to main()
тогда стартовать будет с ResetHandler
и в асм окне будет если интересно асм по шагам смотреть

и сейчас проще в телеге найти канал по MCU и там спрашивать
на форумах мало движухи и отклик долгий


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Чт дек 18, 2025 22:56:45 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1659
Рейтинг сообщения: 0
Zikon, сейчас при входе в отладчик сразу код идёт, или что, доступна кнопка STOP.
После старта отладочной сессии, процессор должен по идее быть остановленным или в начале main() или по адресу вектора сброса. Не должен он быть в "run". Что-то не так тут. Может адрес точки входа (стартовый адрес прошивки) не задан или неправильно задан?
Или выполнение по каким-то причинам не доходит от 0x165 до main()?

У вас, судя по скриншоту с образом прошивки, вектор сброса указывает на адрес 0x165. Можно перед подключением отладчика, поставить на этот адрес бряк (в окне дизасма). И дальше прошагать до начала main(). Или же 2-й бряк поставить на начало main() и от адреса 0x165 до бряка в main() запустить CPU свободно бежать (run). Исполнение должно дойти до бряка в main(). Если не дошло - искать что не так со входом в main().
Вобщем - я бы плясал от адреса в векторе сброса (0x165).

PS: В вашем МК флешь находится с адреса 0x00000000? Точно? Нужно убедиться в этом. У меня нет мануала на ваш МК - не знаю.

Добавлено after 5 minutes 42 seconds:
Шаги не делает, а если нажать Run to cursor line опять запускается и всё. [url=https://img.radiokot.ru/files/157349/medium/3y0m8xiqr8.png]
А зачем вы закомментировали весь код внутри main()? Оставьте там хоть сколько-то кода. Может "run to main" не срабатывает, если main() пустой?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Пт дек 19, 2025 18:16:09 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
jcxz, когда я вхожу в дебаггер желтая стрелка уже сразу почему то стоит на while(1)

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Пт дек 19, 2025 19:13:16 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1659
Рейтинг сообщения: 0
jcxz, когда я вхожу в дебаггер желтая стрелка уже сразу почему то стоит на while(1)
"Жёлтая стрелка" это видимо где должно идти выполнение кода. Но в окне слева у вас в регистре PC=0, хотя если CPU действительно выполняет команду по адресу 0x236, то должно быть PC=0x236.
И в остальных регистрах почему-то 0. Не должно быть такого. Тем более что SP однозначно должен указывать на стек (RAM), а не на flash как у вас.
К тому же вы скрыли код до 0x236. Там есть код начала main()? Или что там?

Вобщем - ваш отладчик показывает полную чушь (на последнем скриншоте).
Советую также проверить реальность программирования флешь отдельно от Кейла. Запустите jflash.exe и проверьте содержимое флеши там.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Пт дек 19, 2025 19:30:18 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
jcxz, если нажать stop (красный круг с крестиком) то регистры обновляются и рс указывает на адрес со стрелкой. Изображение

код до 236

Код:
    66: {
    67: /* ToDo: add code to calculate the system frequency based upon the current
    68:          register settings.
    69:          This function can be used to retrieve the system core clock frequeny
    70:          after user changed register sittings.                                */
    71:   SystemCoreClock = __SYSTEM_CLOCK;
    72:   //return;
0x00000000 1068      DCW      0x1068
0x00000002 2000      DCW      0x2000
0x00000004 0165      DCW      0x0165
    73: }
    74: 
    75: /**
    76:  * Initialize the system
    77:  *
    78:  * @param  none
    79:  * @return none
    80:  *
    81:  * @brief  Setup the microcontroller system.
    82:  *         Initialize the System.
    83:  */
    84: void SystemInit (void)
0x00000006 0000      DCW      0x0000
0x00000008 016D      DCW      0x016D
0x0000000A 0000      DCW      0x0000
0x0000000C 016F      DCW      0x016F
0x0000000E 0000      DCW      0x0000
0x00000010 0000      DCW      0x0000
0x00000012 0000      DCW      0x0000
0x00000014 0000      DCW      0x0000
0x00000016 0000      DCW      0x0000
0x00000018 0000      DCW      0x0000
0x0000001A 0000      DCW      0x0000
0x0000001C 0000      DCW      0x0000
0x0000001E 0000      DCW      0x0000
0x00000020 0000      DCW      0x0000
0x00000022 0000      DCW      0x0000
0x00000024 0000      DCW      0x0000
0x00000026 0000      DCW      0x0000
0x00000028 0000      DCW      0x0000
0x0000002A 0000      DCW      0x0000
0x0000002C 0171      DCW      0x0171
0x0000002E 0000      DCW      0x0000
0x00000030 0000      DCW      0x0000
0x00000032 0000      DCW      0x0000
0x00000034 0000      DCW      0x0000
0x00000036 0000      DCW      0x0000
0x00000038 0173      DCW      0x0173
0x0000003A 0000      DCW      0x0000
0x0000003C 0175      DCW      0x0175
0x0000003E 0000      DCW      0x0000
0x00000040 0177      DCW      0x0177
0x00000042 0000      DCW      0x0000
0x00000044 0177      DCW      0x0177
0x00000046 0000      DCW      0x0000
0x00000048 0177      DCW      0x0177
0x0000004A 0000      DCW      0x0000
0x0000004C 0177      DCW      0x0177
0x0000004E 0000      DCW      0x0000
0x00000050 0177      DCW      0x0177
0x00000052 0000      DCW      0x0000
0x00000054 0177      DCW      0x0177
0x00000056 0000      DCW      0x0000
0x00000058 0177      DCW      0x0177
0x0000005A 0000      DCW      0x0000
0x0000005C 0177      DCW      0x0177
0x0000005E 0000      DCW      0x0000
0x00000060 0177      DCW      0x0177
0x00000062 0000      DCW      0x0000
0x00000064 0177      DCW      0x0177
0x00000066 0000      DCW      0x0000
0x00000068 0177      DCW      0x0177
0x0000006A 0000      DCW      0x0000
0x0000006C 0177      DCW      0x0177
0x0000006E 0000      DCW      0x0000
0x00000070 0177      DCW      0x0177
0x00000072 0000      DCW      0x0000
0x00000074 0177      DCW      0x0177
0x00000076 0000      DCW      0x0000
0x00000078 0177      DCW      0x0177
0x0000007A 0000      DCW      0x0000
0x0000007C 0177      DCW      0x0177
0x0000007E 0000      DCW      0x0000
0x00000080 0177      DCW      0x0177
0x00000082 0000      DCW      0x0000
0x00000084 0177      DCW      0x0177
0x00000086 0000      DCW      0x0000
0x00000088 0000      DCW      0x0000
0x0000008A 0000      DCW      0x0000
0x0000008C 0177      DCW      0x0177
0x0000008E 0000      DCW      0x0000
0x00000090 0177      DCW      0x0177
0x00000092 0000      DCW      0x0000
0x00000094 0177      DCW      0x0177
0x00000096 0000      DCW      0x0000
0x00000098 0177      DCW      0x0177
0x0000009A 0000      DCW      0x0000
0x0000009C 0177      DCW      0x0177
0x0000009E 0000      DCW      0x0000
0x000000A0 0177      DCW      0x0177
0x000000A2 0000      DCW      0x0000
0x000000A4 0177      DCW      0x0177
0x000000A6 0000      DCW      0x0000
0x000000A8 0177      DCW      0x0177
0x000000AA 0000      DCW      0x0000
0x000000AC 0177      DCW      0x0177
0x000000AE 0000      DCW      0x0000
0x000000B0 0177      DCW      0x0177
0x000000B2 0000      DCW      0x0000
0x000000B4 0177      DCW      0x0177
0x000000B6 0000      DCW      0x0000
0x000000B8 0177      DCW      0x0177
0x000000BA 0000      DCW      0x0000
0x000000BC 0177      DCW      0x0177
0x000000BE 0000      DCW      0x0000
0x000000C0 F000F802  BL.W     0x000000C8 __scatterload
0x000000C4 F000F83E  BL.W     0x00000144 __rt_entry
0x000000C8 A00C      ADR      r0,{pc}+0x34  ; @0x000000FC
0x000000CA C830      LDM      r0!,{r4-r5}
0x000000CC 3808      SUBS     r0,r0,#0x08
0x000000CE 1824      ADDS     r4,r4,r0
0x000000D0 182D      ADDS     r5,r5,r0
0x000000D2 1E67      SUBS     r7,r4,#1
0x000000D4 46A2      MOV      r10,r4
0x000000D6 46AB      MOV      r11,r5
0x000000D8 4654      MOV      r4,r10
0x000000DA 465D      MOV      r5,r11
0x000000DC 42AC      CMP      r4,r5
0x000000DE D101      BNE      0x000000E4
0x000000E0 F000F830  BL.W     0x00000144 __rt_entry
0x000000E4 467E      MOV      r6,pc
0x000000E6 3E0F      SUBS     r6,r6,#0x0F
0x000000E8 46B6      MOV      lr,r6
0x000000EA CC0F      LDM      r4!,{r0-r3}
0x000000EC 2601      MOVS     r6,#0x01
0x000000EE 4233      TST      r3,r6
0x000000F0 D000      BEQ      0x000000F4
0x000000F2 1AFB      SUBS     r3,r7,r3
0x000000F4 4333      ORRS     r3,r3,r6
0x000000F6 46A2      MOV      r10,r4
0x000000F8 46AB      MOV      r11,r5
0x000000FA 4718      BX       r3
0x000000FC 0144      DCW      0x0144
0x000000FE 0000      DCW      0x0000
0x00000100 0164      DCW      0x0164
0x00000102 0000      DCW      0x0000
0x00000104 3A10      SUBS     r2,r2,#0x10
0x00000106 D302      BCC      0x0000010E
0x00000108 C878      LDM      r0!,{r3-r6}
0x0000010A C178      STM      r1!,{r3-r6}
0x0000010C D8FA      BHI      0x00000104 __scatterload_copy
0x0000010E 0752      LSLS     r2,r2,#29
0x00000110 D301      BCC      0x00000116
0x00000112 C830      LDM      r0!,{r4-r5}
0x00000114 C130      STM      r1!,{r4-r5}
0x00000116 D501      BPL      0x0000011C
0x00000118 6804      LDR      r4,[r0,#0x00]
0x0000011A 600C      STR      r4,[r1,#0x00]
0x0000011C 4770      BX       lr
0x0000011E 0000      MOVS     r0,r0
0x00000120 2300      MOVS     r3,#0x00
0x00000122 2400      MOVS     r4,#0x00
0x00000124 2500      MOVS     r5,#0x00
0x00000126 2600      MOVS     r6,#0x00
0x00000128 3A10      SUBS     r2,r2,#0x10
0x0000012A D301      BCC      0x00000130
0x0000012C C178      STM      r1!,{r3-r6}
0x0000012E D8FB      BHI      0x00000128
0x00000130 0752      LSLS     r2,r2,#29
0x00000132 D300      BCC      0x00000136
0x00000134 C130      STM      r1!,{r4-r5}
0x00000136 D500      BPL      0x0000013A
0x00000138 600B      STR      r3,[r1,#0x00]
0x0000013A 4770      BX       lr
                 __rt_lib_init:
0x0000013C B51F      PUSH     {r0-r4,lr}
                 __rt_lib_init_alloca_1:
0x0000013E BD1F      POP      {r0-r4,pc}
                 __rt_lib_shutdown:
0x00000140 B510      PUSH     {r4,lr}
                 __rt_lib_shutdown_cpp_1:
0x00000142 BD10      POP      {r4,pc}
                 __rt_entry:
0x00000144 F000F82D  BL.W     0x000001A2 __user_setup_stackheap
0x00000148 4611      MOV      r1,r2
                 __rt_entry_li:
0x0000014A F7FFFFF7  BL.W     0x0000013C __rt_lib_init
                 __rt_entry_main:
0x0000014E F000F863  BL.W     0x00000218 main
0x00000152 F000F845  BL.W     0x000001E0 exit
                 __rt_exit:
0x00000156 B403      PUSH     {r0-r1}
                 __rt_exit_ls:
0x00000158 F7FFFFF2  BL.W     0x00000140 __rt_lib_shutdown
                 __rt_exit_exit:
0x0000015C BC03      POP      {r0-r1}
0x0000015E F000F84B  BL.W     0x000001F8 _sys_exit
0x00000162 0000      MOVS     r0,r0
   101:                 LDR     R0, =SystemInit
0x00000164 4807      LDR      r0,[pc,#28]  ; @0x00000184
   102:                 BLX     R0             
0x00000166 4780      BLX      r0
   103:                 LDR     R0, =__main
0x00000168 4807      LDR      r0,[pc,#28]  ; @0x00000188
   104:                 BX      R0
   105:                 ENDP
   106: 
   107: 
   108: ; Dummy Exception Handlers (infinite loops which can be modified)
   109: 
   110: NMI_Handler     PROC
   111:                 EXPORT  NMI_Handler               [WEAK]
0x0000016A 4700      BX       r0
   112:                 B       .
   113:                 ENDP
   114: HardFault_Handler\
   115:                 PROC
   116:                 EXPORT  HardFault_Handler         [WEAK]
0x0000016C E7FE      B        0x0000016C NMI_Handler
   117:                 B       .
   118:                 ENDP
   119: SVC_Handler     PROC
   120:                 EXPORT  SVC_Handler               [WEAK]
0x0000016E E7FE      B        0x0000016E HardFault_Handler
   121:                 B       .
   122:                 ENDP
   123: PendSV_Handler  PROC
   124:                 EXPORT  PendSV_Handler            [WEAK]
0x00000170 E7FE      B        0x00000170 SVC_Handler
   125:                 B       .
   126:                 ENDP
   127: SysTick_Handler PROC
   128:                 EXPORT  SysTick_Handler           [WEAK]
0x00000172 E7FE      B        0x00000172 PendSV_Handler
   129:                 B       .
0x00000174 E7FE      B        0x00000174 SysTick_Handler
   197:                 B       .
   198:                 ENDP
   199: 
   200: 
   201:                 ALIGN
   202: 
   203: 
   204: ; User Initial Stack & Heap
   205: 
   206:                 IF      :DEF:__MICROLIB
   207: 
   208:                 EXPORT  __initial_sp
   209:                 EXPORT  __heap_base
   210:                 EXPORT  __heap_limit
   211: 
   212:                 ELSE
   213: 
   214:                 IMPORT  __use_two_region_memory
   215:                 EXPORT  __user_initial_stackheap
   216: __user_initial_stackheap
   217: 
0x00000176 E7FE      B        0x00000176 Default_Handler
                 __user_initial_stackheap:
0x00000178 4804      LDR      r0,[pc,#16]  ; @0x0000018C
0x0000017A 4905      LDR      r1,[pc,#20]  ; @0x00000190
0x0000017C 4A05      LDR      r2,[pc,#20]  ; @0x00000194
0x0000017E 4B06      LDR      r3,[pc,#24]  ; @0x00000198
0x00000180 4770      BX       lr
0x00000182 0000      DCW      0x0000
0x00000184 0209      DCW      0x0209
0x00000186 0000      DCW      0x0000
0x00000188 00C1      DCW      0x00C1
0x0000018A 0000      DCW      0x0000
0x0000018C 0068      DCW      0x0068
0x0000018E 2000      DCW      0x2000
0x00000190 1068      DCW      0x1068
0x00000192 2000      DCW      0x2000
0x00000194 0868      DCW      0x0868
0x00000196 2000      DCW      0x2000
0x00000198 0868      DCW      0x0868
0x0000019A 2000      DCW      0x2000
0x0000019C 4770      BX       lr
0x0000019E 4770      BX       lr
0x000001A0 4770      BX       lr
0x000001A2 4675      MOV      r5,lr
0x000001A4 F000F824  BL.W     0x000001F0 __user_libspace
0x000001A8 46AE      MOV      lr,r5
0x000001AA 0005      MOVS     r5,r0
0x000001AC 4669      MOV      r1,sp
0x000001AE 4653      MOV      r3,r10
0x000001B0 08C0      LSRS     r0,r0,#3
0x000001B2 00C0      LSLS     r0,r0,#3
0x000001B4 4685      MOV      sp,r0
0x000001B6 B018      ADD      sp,sp,#0x60
0x000001B8 B520      PUSH     {r5,lr}
0x000001BA F7FFFFDD  BL.W     0x00000178 __user_initial_stackheap
0x000001BE BC60      POP      {r5-r6}
0x000001C0 46B6      MOV      lr,r6
0x000001C2 2600      MOVS     r6,#0x00
0x000001C4 2700      MOVS     r7,#0x00
0x000001C6 C5C0      STM      r5!,{r6-r7}
0x000001C8 C5C0      STM      r5!,{r6-r7}
0x000001CA C5C0      STM      r5!,{r6-r7}
0x000001CC C5C0      STM      r5!,{r6-r7}
0x000001CE C5C0      STM      r5!,{r6-r7}
0x000001D0 C5C0      STM      r5!,{r6-r7}
0x000001D2 C5C0      STM      r5!,{r6-r7}
0x000001D4 C5C0      STM      r5!,{r6-r7}
0x000001D6 3D40      SUBS     r5,r5,#0x40
0x000001D8 0849      LSRS     r1,r1,#1
0x000001DA 0049      LSLS     r1,r1,#1
0x000001DC 468D      MOV      sp,r1
0x000001DE 4770      BX       lr
0x000001E0 B510      PUSH     {r4,lr}
0x000001E2 4604      MOV      r4,r0
0x000001E4 46C0      MOV      r8,r8
0x000001E6 46C0      MOV      r8,r8
0x000001E8 4620      MOV      r0,r4
0x000001EA F7FFFFB4  BL.W     0x00000156 __rt_exit
0x000001EE BD10      POP      {r4,pc}
0x000001F0 4800      LDR      r0,[pc,#0]  ; @0x000001F4
0x000001F2 4770      BX       lr
0x000001F4 0008      DCW      0x0008
0x000001F6 2000      DCW      0x2000
0x000001F8 4901      LDR      r1,[pc,#4]  ; @0x00000200
0x000001FA 2018      MOVS     r0,#0x18
0x000001FC BEAB      BKPT     0xAB
0x000001FE E7FE      B        0x000001FE
0x00000200 0026      DCW      0x0026
0x00000202 0002      DCW      0x0002
0x00000204 4770      BX       lr
                 __semihosting_library_function:
0x00000206 0000      MOVS     r0,r0
    85: {
    86: /* ToDo: add code to initialize the system
    87:          do not use global variables because this function is called before
    88:          reaching pre-main. RW section maybe overwritten afterwards.          */
    89:   SystemCoreClock = __SYSTEM_CLOCK;
    90:   //return;
0x00000208 4801      LDR      r0,[pc,#4]  ; @0x00000210
0x0000020A 4902      LDR      r1,[pc,#8]  ; @0x00000214
0x0000020C 6001      STR      r1,[r0,#0x00]
    91: }
0x0000020E 4770      BX       lr
0x00000210 0000      DCW      0x0000
0x00000212 2000      DCW      0x2000
0x00000214 1200      DCW      0x1200
0x00000216 007A      DCW      0x007A
     3: int main(void){
0x00000218 4807      LDR      r0,[pc,#28]  ; @0x00000238
0x0000021A 2101      MOVS     r1,#0x01
     4:         CMU->RCHFCR = 0x01;
0x0000021C 6001      STR      r1,[r0,#0x00]
0x0000021E 4807      LDR      r0,[pc,#28]  ; @0x0000023C
     5:         GPIOG->PUEN |= (1 << 6);
0x00000220 6802      LDR      r2,[r0,#0x00]
0x00000222 2340      MOVS     r3,#0x40
0x00000224 431A      ORRS     r2,r2,r3
0x00000226 6002      STR      r2,[r0,#0x00]
0x00000228 0349      LSLS     r1,r1,#13
     6:         GPIOG->FCR |= (0x02U << 12);
0x0000022A 6882      LDR      r2,[r0,#0x08]
0x0000022C 430A      ORRS     r2,r2,r1
0x0000022E 6082      STR      r2,[r0,#0x08]
     7:         GPIOG->DO |= (1 << 6);
     8: 
0x00000230 68C1      LDR      r1,[r0,#0x0C]
0x00000232 4319      ORRS     r1,r1,r3
0x00000234 60C1      STR      r1,[r0,#0x0C]
     9:         while(1){
0x00000236 E7FE      B        0x00000236


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Пт дек 19, 2025 20:23:46 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт фев 28, 2017 08:13:31
Сообщений: 74
Откуда: Свердловская обл.
Рейтинг сообщения: 0
убери старт отладки с main()
( в настройках проекта вкладка Debug и убери галочку на "Run to main()" )
должен при входе в отладку
начинать с адреса ResetHandler 0x00000164

и зачаем Stop нажимать ?
Run что-ли нажал - зачем ?
Есть же step - разные

и правильно - если Run нажал - он у тебя в бесконечном цикле крутится - while(1) который
Stop нажал - он там и выпал !

Где он должен быть то ещё ?


Странно main с адреса 0x00000218
и до while какая-то инициализация идёт
а листинг откуда ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Сб дек 20, 2025 09:02:30 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
Zikon, убирал run to main. Ничего не менялось. При входе в дебаггер он сразу стоит по тому
Адресу что на картинке. И сразу почему то как будто запущен (как на скрине). Я run не нажимал.. так сразу, при входе в отладчик. Листинг с дизасеиблера отладчика


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Сб дек 20, 2025 14:22:30 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1659
Рейтинг сообщения: 0
Zikon, убирал run to main. Ничего не менялось. При входе в дебаггер он сразу стоит по тому
Адресу что на картинке.
Он у вас как раз не стоит. (как сами же пишете) А CPU выполняет программу. А должен именно стоять после старта отладочной сессии. На начале main() или на адресе reset-вектора.
Как будто что-то заставляет отладчик нажать "run" самостоятельно. Или как будто отладчик не видит точки входа программы.

Интересно - а какой адрес фигурирует в .hex-файле в качестве стартового адреса программы?
Это строка .hex-файла с типом =5. См.описание .hex: https://ru.wikipedia.org/wiki/Intel_HEX
там ищем "32-битный адрес запуска программы в «линейном» адресном пространстве".

Добавлено after 4 minutes 39 seconds:
Странно main с адреса 0x00000218
и до while какая-то инициализация идёт
Там как раз ничего странного: По reset-вектору сразу делается вызов SystemInit() (почему-то пустой, который только зачем-то записывает одно слово в начало ОЗУ и больше ничего не делает). А после выхода из SystemInit() выполняется си-стартап код. Который должен быть выполнен до входа в main(). Тут всё стандартно.
Странно, что CPU проскакивает все эти адреса без остановки. Не останавливаясь ни на ResetHandler ни в начале main().

PS: Подозреваю что какая-то фигня в .elf-файле. Со старт-адресом программы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Вс дек 21, 2025 13:19:17 
Родился

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 18
Рейтинг сообщения: 0
jcxz, приведу целиком hex
Код:
:020000040000FA
:1000000068100020650100006D0100006F01000014
:1000100000000000000000000000000000000000E0
:10002000000000000000000000000000710100005E
:1000300000000000000000007301000075010000D6
:1000400077010000770100007701000077010000D0
:1000500077010000770100007701000077010000C0
:1000600077010000770100007701000077010000B0
:1000700077010000770100007701000077010000A0
:100080007701000077010000000000007701000008
:100090007701000077010000770100007701000080
:1000A0007701000077010000770100007701000070
:1000B0007701000077010000770100007701000060
:1000C00000F002F800F03EF80CA030C80838241800
:1000D0002D18671EA246AB4654465D46AC4201D180
:1000E00000F030F87E460F3EB6460FCC0126334274
:1000F00000D0FB1A3343A246AB4618475801000014
:1001000078010000103A02D378C878C1FAD85207B3
:1001100001D330C830C101D504680C6070470000BD
:100120000023002400250026103A01D378C1FBD813
:10013000520700D330C100D50B6070471FB51FBDFB
:1001400010B510BD00F02DF81146FFF7F7FF00F0D5
:1001500063F800F045F803B4FFF7F2FF03BC00F0CA
:100160004BF800000748804707480047FEE7FEE7D6
:10017000FEE7FEE7FEE7FEE704480549054A064BB1
:100180007047000009020000C10000006800002064
:100190006810002068080020680800207047704739
:1001A0007047754600F024F8AE4605006946534690
:1001B000C008C000854618B020B5FFF7DDFF60BC61
:1001C000B64600260027C0C5C0C5C0C5C0C5C0C54D
:1001D000C0C5C0C5C0C5403D490849008D467047EF
:1001E00010B50446C046C0462046FFF7B4FF10BD18
:1001F000004870470800002001491820ABBEFEE708
:100200002600020070470000014802490160704763
:100210000000002000127A000C48012101600C4A05
:10022000146840231C4314600C03956825439560B3
:1002300015691D431561016015681D4315609568BA
:100240002543956015691D431561F4E704240040BA
:10025000840D00407802000000000020080000002B
:10026000040100008002000008000020601000006F
:10027000200100000000000000127A0000000000D1
:04000005000000C136
:00000001FF


Типу 5 соответствует предпоследняя строка :04000005000000C136 . Выходит что адрес 0x000000C1, исходя из примеров данного формата. Но в дизассемблере что-то я не наблюдаю такого адреса Изображение

Добавлено after 4 minutes 28 seconds:
Приведу еще системИнит и стартап коды
Код:
;//-------- <<< Use Configuration Wizard in Context Menu >>> ----------
;*/


; <h> Stack Configuration
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Stack_Size      EQU     0x00000800

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp   


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00000800

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

                PRESERVE8
                THUMB


; Vector Table Mapped to Address 0 at Reset

                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors
                EXPORT  __Vectors_End
                EXPORT  __Vectors_Size

__Vectors       DCD     __initial_sp              ; Top of Stack
                DCD     Reset_Handler             ; Reset Handler
                DCD     NMI_Handler               ; NMI Handler
                DCD     HardFault_Handler         ; Hard Fault Handler
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     SVC_Handler               ; SVCall Handler
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     PendSV_Handler            ; PendSV Handler
                DCD     SysTick_Handler           ; SysTick Handler

                ; External Interrupts
           DCD     WWDT_IRQHandler           ; 0:  WWDT
            DCD     SVD_IRQHandler            ; 1:  SVD    
            DCD     RTC_IRQHandler            ; 2:  RTC   
            DCD     FLASH_IRQHandler          ; 3:  FLASH   
            DCD     CMU_IRQHandler            ; 4:  CMU   
            DCD     ADC_IRQHandler            ; 5:  ADC   
            DCD     SPI0_IRQHandler           ; 6:  SPI0
            DCD     SPI1_IRQHandler           ; 7:  SPI1    
            DCD     SPI2_IRQHandler           ; 8:  SPI2
           DCD     UART0_IRQHandler          ; 9:  UART0   
            DCD     UART1_IRQHandler          ; 10:  UART1   
            DCD     UART2_IRQHandler          ; 11:  UART2      
            DCD     UART3_IRQHandler          ; 12:  UART3   
            DCD     UART4_IRQHandler          ; 13:  UART4   
            DCD     UART5_IRQHandler          ; 14:  UART5      
            DCD     U7816_IRQHandler            ; 15:  U7816   
            DCD     LPUART0_IRQHandler           ; 16:  LPUART0   
            DCD     I2Cx_IRQHandler           ; 17:  I2Cx
            DCD     0                         ; 18:  RSV   
            DCD     CRYPTO_IRQHandler         ; 19:  CRYPTO   
            DCD     LPTIM_IRQHandler          ; 20:  LPTIM   
            DCD     DMA_IRQHandler            ; 21:  DMA   
            DCD     WKUPx_IRQHandler          ; 22:  WKUPx   
            DCD     COMP_IRQHandler           ; 23:  COMP   
            DCD     BTx_IRQHandler            ; 24:  BTx
            DCD     QSPI_IRQHandler           ; 25:  QSPI
            DCD     ETx_IRQHandler            ; 26:  ETx   
            DCD     BSTIM_IRQHandler          ; 27:  BSTIM   
            DCD     SPI3_IRQHandler           ; 28:  SPI3   
            DCD     SPI4_IRQHandler           ; 29:  SPI4
        DCD     GPIO_IRQHandler           ; 30:  GPIO
        DCD     LPUART1_IRQHandler            ; 31:  LPUART0
__Vectors_End

__Vectors_Size  EQU     __Vectors_End - __Vectors

                AREA    |.text|, CODE, READONLY


; Reset Handler

Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  SystemInit
                IMPORT  __main
                LDR     R0, =SystemInit
                BLX     R0      
                LDR     R0, =__main
                BX      R0
                ENDP


; Dummy Exception Handlers (infinite loops which can be modified)

NMI_Handler     PROC
                EXPORT  NMI_Handler               [WEAK]
                B       .
                ENDP
HardFault_Handler\
                PROC
                EXPORT  HardFault_Handler         [WEAK]
                B       .
                ENDP
SVC_Handler     PROC
                EXPORT  SVC_Handler               [WEAK]
                B       .
                ENDP
PendSV_Handler  PROC
                EXPORT  PendSV_Handler            [WEAK]
                B       .
                ENDP
SysTick_Handler PROC
                EXPORT  SysTick_Handler           [WEAK]
                B       .
                ENDP

Default_Handler PROC
                    EXPORT    LPUART1_IRQHandler               [WEAK]
                    EXPORT  GPIO_IRQHandler               [WEAK]
                EXPORT  SPI4_IRQHandler            [WEAK]
                EXPORT  SPI3_IRQHandler           [WEAK]
                EXPORT  BSTIM_IRQHandler           [WEAK]
                EXPORT  ETx_IRQHandler           [WEAK]
                EXPORT  QSPI_IRQHandler           [WEAK]
                EXPORT  BTx_IRQHandler          [WEAK]
                EXPORT  COMP_IRQHandler          [WEAK]   
                    EXPORT   WKUPx_IRQHandler         [WEAK]
                EXPORT  DMA_IRQHandler          [WEAK]
                EXPORT  LPTIM_IRQHandler           [WEAK]
                    EXPORT  CRYPTO_IRQHandler           [WEAK]
                    EXPORT  I2Cx_IRQHandler           [WEAK]
                    EXPORT   LPUART0_IRQHandler         [WEAK]   
                    EXPORT   U7816_IRQHandler         [WEAK]
                    EXPORT  UART5_IRQHandler           [WEAK]   
                EXPORT  UART4_IRQHandler           [WEAK]
                EXPORT  UART3_IRQHandler           [WEAK]
                EXPORT  UART2_IRQHandler          [WEAK]
                EXPORT  UART1_IRQHandler          [WEAK]
                EXPORT  UART0_IRQHandler          [WEAK]
                EXPORT  SPI2_IRQHandler        [WEAK]
                EXPORT  SPI1_IRQHandler            [WEAK]
                EXPORT  SPI0_IRQHandler            [WEAK]
                EXPORT  ADC_IRQHandler            [WEAK]
                EXPORT  CMU_IRQHandler            [WEAK]
                EXPORT  FLASH_IRQHandler       [WEAK]
                EXPORT  RTC_IRQHandler            [WEAK]
                EXPORT  SVD_IRQHandler       [WEAK]
                EXPORT  WWDT_IRQHandler            [WEAK]
               
LPUART1_IRQHandler               
GPIO_IRQHandler
SPI4_IRQHandler
SPI3_IRQHandler
BSTIM_IRQHandler
ETx_IRQHandler
QSPI_IRQHandler
BTx_IRQHandler
COMP_IRQHandler
WKUPx_IRQHandler
DMA_IRQHandler
LPTIM_IRQHandler
CRYPTO_IRQHandler
I2Cx_IRQHandler
LPUART0_IRQHandler
U7816_IRQHandler
UART5_IRQHandler
UART4_IRQHandler
UART3_IRQHandler
UART2_IRQHandler
UART1_IRQHandler
UART0_IRQHandler
SPI2_IRQHandler
SPI1_IRQHandler
SPI0_IRQHandler
ADC_IRQHandler
CMU_IRQHandler
FLASH_IRQHandler
RTC_IRQHandler
SVD_IRQHandler
WWDT_IRQHandler

                B       .
                ENDP


                ALIGN


; User Initial Stack & Heap

                IF      :DEF:__MICROLIB

                EXPORT  __initial_sp
                EXPORT  __heap_base
                EXPORT  __heap_limit

                ELSE

                IMPORT  __use_two_region_memory
                EXPORT  __user_initial_stackheap
__user_initial_stackheap

                 LDR     R0, =  Heap_Mem
                 LDR     R1, =(Stack_Mem + Stack_Size)
                 LDR     R2, = (Heap_Mem +  Heap_Size)
                 LDR     R3, = Stack_Mem
                 BX      LR

                ALIGN

                ENDIF


                END
               
 *****END OF FILE*****





Код:
/**************************************************************************//**
 * @file     system_<Device>.c
 * @brief    CMSIS Cortex-M# Device Peripheral Access Layer Source File for
 *           Device <Device>
 * @version  V3.10
 * @date     23. November 2012
 *
 * @note
 *
 ******************************************************************************/
/* Copyright (c) 2012 ARM LIMITED

   All rights reserved.
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
   - Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
   - Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.
   - Neither the name of ARM nor the names of its contributors may be used
     to endorse or promote products derived from this software without
     specific prior written permission.
   *
   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   POSSIBILITY OF SUCH DAMAGE.
   ----------*/


#include <stdint.h>
#include "FM33A0XXEV.h"

/*----------
  DEFINES
 *----------*/

/*----------
  Define clocks
 *----------*/
/* ToDo: add here your necessary defines for device initialization
         following is an example for different system frequencies             */
#define __SYSTEM_CLOCK             (8000000)      /* Value of the INITIAL frequencies in Hz */

/*----------
  Clock Variable definitions
 *----------*/
/* ToDo: initialize SystemCoreClock with the system core clock frequency value
         achieved after system intitialization.
         This means system core clock frequency after call to SystemInit()    */
uint32_t SystemCoreClock = __SYSTEM_CLOCK;  /*!< System Clock Frequency (Core Clock)*/


/*----------
  Clock functions
 *----------*/
void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
{
/* ToDo: add code to calculate the system frequency based upon the current
         register settings.
         This function can be used to retrieve the system core clock frequeny
         after user changed register sittings.                                */
  SystemCoreClock = __SYSTEM_CLOCK;
  //return;
}

/**
 * Initialize the system
 *
 * @param  none
 * @return none
 *
 * @brief  Setup the microcontroller system.
 *         Initialize the System.
 */
void SystemInit (void)
{
/* ToDo: add code to initialize the system
         do not use global variables because this function is called before
         reaching pre-main. RW section maybe overwritten afterwards.          */
  SystemCoreClock = __SYSTEM_CLOCK;
  //return;
}


Добавлено after 11 minutes 48 seconds:

При попытке чтения JFlash почему то не показывает память. Хотя программа пишет что коннектится и очищает чип.

Изображение Изображение Изображение

Мануал

https://vk.com/doc200790048_695339048?h ... sg_desktop

Добавлено after 11 minutes 32 seconds:
- WARNING: Flash bank 0 disabled, skipped. может в этом проблема?

Добавлено after 25 minutes 26 seconds:
Весь лог Jflash
Код:
Application log started
 - J-Flash V8.94 (J-Flash compiled Dec 10 2025 14:50:20)
 - JLinkARM.dll V8.94 (DLL compiled Dec 10 2025 14:49:54)
Reading flash device list [C:\Program Files\SEGGER\JLink_V894\ETC/JFlash/Flash.csv] ...
 - List of flash devices read successfully (451 Devices)
Reading MCU device list ...
 - List of MCU devices read successfully (13364 Devices)
Creating new project ...
 - New project created successfully
Reading target memory (0x00000000 - 0x00000200) ...
 - Connecting ...
  - Connected successfully
 - WARNING: Flash bank 0 disabled, skipped.
 - Target memory read successfully. (0 bytes, 0 ranges) - Completed after 0.155 sec
Reading target memory (0x00000000 - 0x00040000) ...
 - WARNING: Flash bank 0 disabled, skipped.
 - Target memory read successfully. (0 bytes, 0 ranges) - Completed after 0.000 sec
Disconnecting ...
 - Disconnected
Connecting ...
 - Connecting via USB to probe/ programmer device 0
 - Probe/ Programmer firmware: J-Link V11 compiled Apr  1 2025 10:02:30
 - Probe/ Programmer S/N: 603000869
 - Device "CORTEX-M0" selected.
 - Target interface speed: 9474 kHz (Fixed)
 - VTarget = 3.348V
 - Found SW-DP with ID 0x0BB11477
 - DPIDR: 0x0BB11477
 - CoreSight SoC-400 or earlier
 - Scanning AP map to find all available APs
 - AP[1]: Stopped AP scan as end of AP map has been reached
 - AP[0]: AHB-AP (IDR: 0x04770021, ADDR: 0x00000000)
 - Iterating through AP map to find AHB-AP to use
 - AP[0]: Core found
 - AP[0]: AHB-AP ROM base: 0xE00FF000
 - CPUID register: 0x410CC300. Implementer code: 0x41 (ARM)
 - Unknown core, assuming Cortex-M0
 - Found Cortex-M0 r0p0, Little endian.
 - FPUnit: 4 code (BP) slots and 0 literal slots
 - CoreSight components:
 - ROMTbl[0] @ E00FF000
 - [0][0]: E000E000 CID B105E00D PID 000BB00D ???
 - [0][1]: E0001000 CID B105E00D PID 000BB00A DWT
 - [0][2]: E0002000 CID B105E00D PID 000BB00B FPB
 - Executing init sequence ...
  - Initialized successfully
 - Target interface speed: 9474 kHz (Fixed)
 - Found 1 JTAG device. Core ID: 0x0BB11477 (None)
 - Connected successfully
Reading entire flash chip ...
 - 1 sector, 1 range, 0x0 - 0x7FFFFFFF
 - WARNING: Flash bank 0 disabled, skipped.
 - Target memory read successfully. (0 bytes, 0 ranges) - Completed after 0.000 sec


Добавлено after 42 minutes 49 seconds:
код через jflash при этом вроде как заливается и верифицируется, но почему
Код:
Programming and verifying target (0 bytes, 0 ranges) ...
0 байтов?

Код:
Connecting ...
 - Connecting via USB to probe/ programmer device 0
 - Probe/ Programmer firmware: J-Link V11 compiled Apr  1 2025 10:02:30
 - Probe/ Programmer S/N: 603000869
 - Device "CORTEX-M0" selected.
 - Target interface speed: 4000 kHz (Fixed)
 - VTarget = 3.348V
 - Found SW-DP with ID 0x0BB11477
 - DPIDR: 0x0BB11477
 - CoreSight SoC-400 or earlier
 - Scanning AP map to find all available APs
 - AP[1]: Stopped AP scan as end of AP map has been reached
 - AP[0]: AHB-AP (IDR: 0x04770021, ADDR: 0x00000000)
 - Iterating through AP map to find AHB-AP to use
 - AP[0]: Core found
 - AP[0]: AHB-AP ROM base: 0xE00FF000
 - CPUID register: 0x410CC300. Implementer code: 0x41 (ARM)
 - Unknown core, assuming Cortex-M0
 - Found Cortex-M0 r0p0, Little endian.
 - FPUnit: 4 code (BP) slots and 0 literal slots
 - CoreSight components:
 - ROMTbl[0] @ E00FF000
 - [0][0]: E000E000 CID B105E00D PID 000BB00D ???
 - [0][1]: E0001000 CID B105E00D PID 000BB00A DWT
 - [0][2]: E0002000 CID B105E00D PID 000BB00B FPB
 - Executing init sequence ...
  - Initialized successfully
 - Target interface speed: 4000 kHz (Fixed)
 - Found 1 JTAG device. Core ID: 0x0BB11477 (None)
 - Connected successfully
Programming and verifying target (0 bytes, 0 ranges) ...
 - Checking if selected data fits into selected flash sectors.
 - WARNING: Flash bank 0 disabled, skipped.
 - Target programmed and verified successfully (CRC = 0x00000000) - Completed after 0.003 sec


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Вс дек 21, 2025 16:20:37 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт фев 28, 2017 08:13:31
Сообщений: 74
Откуда: Свердловская обл.
Рейтинг сообщения: 0
адреса в Cortex-M выровнены по 2 байта,
но младший бит используется для указания
что это сокращённая система команд Thumb
и должен быть равен 1
реальный адрес 0x000000C0
и по этому адресу находится процедура __main
внутренняя обёртка для функции main()
в которой делаются многие инициализации до запуска main()

точно также адрес ResetHandler расположен по адресу 0x00000004

Изображение

и равняется 0x00000165 -> 0x00000164

и если адрес старта записан в HEX (как тип 5)
скорее всего надо после того как убрать галочку с "Run to main"
заново собрать прроект (Build)
и запустить отладку
?

Может ещё надо описания чипа для JLink установить (JLinkDevices)
какие-то дополнительные моменты есть у этих чипов ?
Но не нашёл что-то для этих чипов такое.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование микроконтроллеров компании Fudan в Keil
СообщениеДобавлено: Вс дек 21, 2025 16:52:06 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1659
Рейтинг сообщения: 0
При попытке чтения JFlash почему то не показывает память. Хотя программа пишет что коннектится и очищает чип.
Он у вас не читает флешь. В логе же пишет что "disabled".

- WARNING: Flash bank 0 disabled, skipped. может в этом проблема?
Скорее всего.
Похоже у вас стоит защита на флешь. Сделайте полное стирание чипа "Erase chip". Потом - "Check blank". В JFlash. Полное стирание иногда позволяет снять защиту флешь. И не должно быть никаких ошибок или варнингов в логе.
Если JFlash не работает с МК, то пытаться что-то делать отладчиком - бессмысленно. Отладчик просто врёт что загрузил прошивку.

Добавлено after 2 minutes 9 seconds:
Типу 5 соответствует предпоследняя строка :04000005000000C136 . Выходит что адрес 0x000000C1, исходя из примеров данного формата. Но в дизассемблере что-то я не наблюдаю такого адреса
С .hex у вас всё нормально. Стартовые адреса правильные. Zikon уже правильно написал.

PS: Я бы, в целях теста, скомпоновал программу в ОЗУ. И попробовал запустить оттуда. Тем более что её вроде "up to 80KB". Если флешь залочена, то возможно из ОЗУ запуск получится.
Да и отлаживать программы в ОЗУ обычно удобнее. Если размер позволяет.

PPS: Также ваш мануал содержит описание "LDT0 page" и "LDT1 page", в которых содержатся некие LOCK-слова и OPTBYTES. Почитайте про них подробнее - возможно с их помощью можно разлочить флешь.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Sergi и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y