Например TDA7294

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

Текущее время: Сб дек 20, 2025 19:50:15

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


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



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

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 17
Рейтинг сообщения: 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
Сообщений: 1658
Рейтинг сообщения: 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
Сообщений: 17
Рейтинг сообщения: 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
Сообщений: 73
Откуда: Свердловская обл.
Рейтинг сообщения: 0
для начала поставь галки - так

Изображение

Изображение


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

Зарегистрирован: Вс июл 07, 2024 18:40:12
Сообщений: 17
Рейтинг сообщения: 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
Сообщений: 73
Откуда: Свердловская обл.
Рейтинг сообщения: 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
Сообщений: 1658
Рейтинг сообщения: 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
Сообщений: 17
Рейтинг сообщения: 0
jcxz, когда я вхожу в дебаггер желтая стрелка уже сразу почему то стоит на while(1)

Изображение


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

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1658
Рейтинг сообщения: 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
Сообщений: 17
Рейтинг сообщения: 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
Сообщений: 73
Откуда: Свердловская обл.
Рейтинг сообщения: 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
Сообщений: 17
Рейтинг сообщения: 0
Zikon, убирал run to main. Ничего не менялось. При входе в дебаггер он сразу стоит по тому
Адресу что на картинке. И сразу почему то как будто запущен (как на скрине). Я run не нажимал.. так сразу, при входе в отладчик. Листинг с дизасеиблера отладчика


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

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1658
Рейтинг сообщения: 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-файле. Со старт-адресом программы.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


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

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


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