Нужно искать иной дизасм, пробовал тем онлайн-дизасмом что показал выше - всё нормально.
Не будет толку от objdump
Нашел ADS 1.2, там должен быть ARM AXD debugger. Завтра может быть попробую.
Может ему ключи надо какие указать ... странно конечно все это. А онлайн дизасмом да, у меня тоже все норм.Andrew Martin писал(а):Не будет толку от objdump
Кишки ему наружу вывернуть Олькой и посмотреть где непроходимость (или несварение)Alexey_N писал(а): Может ему ключи надо какие указать ... странно конечно все это. А онлайн дизасмом да, у меня тоже все норм.
Обмануть Keil, подсунув ему свой *.axf. Правда он привык к отладочной информации в формате DWARF-3, но у них совместимость сверху вниз.Alexey_N писал(а):Чем же теперь дизассемблить fasm'овскией elf?
А вот этот где можно найти?Andrew Martin писал(а):ARM AXD debugger из ARM ADS 1.2
У меня в свое время не шился, нашел в инете где-то совет подключить вывод SDA через резистор. ставил 180 ом, после чего контроллер шился. а так хз.Kife) писал(а):Здравствуйте.
Пытаюсь прошить STM32F030P4 по SWD. Но не могу найти в чем проблема. Не могу прошить МК, работаю в Keil 5.
Стесняюсь спросить...Kife) писал(а):Здравствуйте.
Пытаюсь прошить STM32F030P4 по SWD. Но не могу найти в чем проблема. Не могу прошить МК
Гугль в помощь.Alexey_N писал(а):А вот этот где можно найти?Andrew Martin писал(а):ARM AXD debugger из ARM ADS 1.2
Конечно же подтянул. И Reset к питанию, через 10к.КРАМ писал(а):А BOOT0, надеюсь, Вы к земле притянули?
А через что прошиваете? ST-Link?Kife) писал(а):Пытаюсь прошить STM32F030P4 по SWD
Да, первой версии. Тот что на борту отладочной планы stm32vldiscovery.Alexey_N писал(а):А через что прошиваете? ST-Link?
Код: Выделить всё
//========================
PT_THREAD(Send_data_fsm(struct pt *pt,unsigned char data1,unsigned char data2)){
static unsigned char data[2];
//---------------------------------------------------------------------------
if(pt->lc!=0){ //Не первый запуск
if(GetTimers(I2C_TimeOut)>TIMEOUT_I2C){
Send_MSG(MSG_I2C_REBOOT);
ResetTimers(I2C_TimeOut);
}
}
//---------------------------------------------------------------------------
PT_BEGIN(pt);
ResetTimers(I2C_TimeOut);
data[0]=data1;
data[1]=data2;
/* initiate start sequence */
while(TakeMutex(I2C_MUTEX)){PT_YIELD(pt);}
I2C_GenerateSTART(I2C2, ENABLE);
/* check start bit flag */
while(!I2C_GetFlagStatus(I2C2, I2C_FLAG_SB)){PT_YIELD(pt);};
/*send write command to chip*/
I2C_Send7bitAddress(I2C2, I2C_ADDR_LCD_KEY_LED, I2C_Direction_Transmitter);
/*check master is now in Tx mode*/
//--------------------------------------------------------------------------
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)){}; //Spead=400KHz delay=1000 clock Spead=1KHz delay=65000 clock
/*mode register address*/
I2C_SendData(I2C2, data[0]);
//--------------------------------------------------------------------------
/*wait for byte send to complete*/
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){PT_YIELD(pt);}; //3600 Speed=100Khz
/*clear bits*/
I2C_SendData(I2C2, data[1]);
//--------------------------------------------------------------------------
/*wait for byte send to complete*/
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){PT_YIELD(pt);};
//--------------------------------------------------------------------------
/*generate stop*/
I2C_GenerateSTOP(I2C2, ENABLE);
while(I2C_GetFlagStatus(I2C2, I2C_FLAG_STOPF)){PT_YIELD(pt);};
GiveMutex(I2C_MUTEX);
PT_END(pt);
}
//========================
Код: Выделить всё
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)){}; //Spead=400KHz delay=1000 clock Код: Выделить всё
I2C2->CR1 |= I2C_CR1_START;
while (!(I2C2->SR1 & I2C_SR1_SB)){};
(void) I2C2->SR1;
I2C2->CR1|=I2C_CR1_ACK;
I2C2->DR = I2C_ADDR_LCD_KEY_LED;
while (!(I2C2->SR1 & I2C_SR1_ADDR)){};
(void) I2C2->SR1;
(void) I2C2->SR2;
Код: Выделить всё
while (!(I2C2->SR1 & I2C_SR1_ADDR)){};А можно ссылку, хотелось бы отслеживать это делоAndrew Martin писал(а):UPD: Отрапортовал баг, закинул эльф и описание.
он жеж сбрасывается при чтении, не?pokk писал(а):При пошаговой отладке в IAR заметил что до while (!(I2C2->SR1 & I2C_SR1_ADDR)){}; флаг ADDR взводится, но как только начинаешь проверку он сбрасывается и соответственно там всё виснет.
Вот.Alexey_N писал(а): А можно ссылку, хотелось бы отслеживать это дело
upd. Что интересно, arm-non-eabi-readelf.exe из того же пакета, что и objdump и objcopy, успешно читает этот файл.