Перейти к содержанию
    

Замена STM32 от Geehy Semiconductor

Кто знает как из программы определить тип процессора APM32F407 или STM32 ?

Смотрел DBGMCU->IDCODE, SCB->CPUID , кода производителя не увидел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/4/2023 at 5:48 PM, _3m said:

Кто знает как из программы определить тип процессора APM32F407 или STM32 ?

Смотрел DBGMCU->IDCODE, SCB->CPUID , кода производителя не увидел.

Похоже, что никак. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но при этом утилита от STM на свой чип распишет все буковки циферки, а остальных может и послать вежливо. Значит как-то различают (возможно по недокументированным полям системной области или в области загрузчика есть что-то).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/4/2023 at 10:48 PM, _3m said:

Кто знает как из программы определить тип процессора APM32F407 или STM32 ?

Смотрел DBGMCU->IDCODE, SCB->CPUID , кода производителя не увидел.

гигадевайс определяется вот так

    // STM32F405 = 0x041
    //  GD32F405 = 0x7A3

uint16_t Get_JTAG_ID(void)
{
    if( *( uint8_t *)( 0xE00FFFE8 ) & 0x08 )
    {
        return ( ( *( uint8_t *)( 0xE00FFFD0 ) & 0x0F ) << 8 )
        |
        ( ( *( uint8_t *)( 0xE00FFFE4 ) & 0xFF ) >> 3 ) |
        ( ( *( uint8_t *)( 0xE00FFFE8 ) & 0x07 ) << 5 ) + 1 ;
    }
    return 0;
}

 

Изменено пользователем haker_fox
Код оформляется с помощью кнопки <>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Edit2007 сказал:

Но при этом утилита от STM на свой чип распишет все буковки циферки, а остальных может и послать вежливо. Значит как-то различают (возможно по недокументированным полям

Если МК - с али, то нельзя гарантировать ровным счётом ничего. У чипов купленных на али, не то что недокументированные поля, но даже хорошо документированные в мануале поля могут иметь совершенно левое содержимое.

Недавно одни знакомые (в РФ) приобрели на али партию LPC1758. Чип - как говно мамонта уже, обсосан вдоль и поперёк и весьма популярный с своё время. Содержит в себе уникальный идентификатор экземпляра. Типа - не должно быть в мире другого экземпляра с таким же chip-ID. И так и было. Раньше. Когда покупали у официалов. Но в пришедшей партии часть МК оказалась с chip-ID = 0! :shok::shok::shok:  Не все. Но теперь  даже к тем, в которых он !=0 доверия нет (в уникальности chip-ID).

PS: Мораль сей басни такова: если имеешь дело с али, то не можешь быть уверенным ни в чём.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/5/2023 at 3:10 PM, Edit2007 said:

Но при этом утилита от STM на свой чип распишет все буковки циферки, а остальных может и послать вежливо. Значит как-то различают (возможно по недокументированным полям системной области или в области загрузчика есть что-то).

Утилита от STM и ST-Link распознают Geehy как родной STM. Т.е. по всем кодам они его воспринимают как STM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, dimka76 сказал:

Т.е. по всем кодам они его воспринимают как STM.

Сам я не программист, по этому дилетантский вопрос: Наши программисты попробовав работать с контроллером от Geehy (что то из  серии F07X), сказали, что его можно зашивать и он работает, как его аналог от ST, а вот отлаживаться под JTAG-ом у них на нем не получилось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, vladec said:

а вот отлаживаться под JTAG-ом у них на нем не получилось.

И вряд ли получится. Т.к. скорее всего там SWD😀 А что конкретно не получилось? Факты бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 часа назад, 0men сказал:

гигадевайс определяется вот так

    // STM32F405 = 0x041
    //  GD32F405 = 0x7A3

uint16_t Get_JTAG_ID(void)
{
    if( *( uint8_t *)( 0xE00FFFE8 ) & 0x08 )
    {
        return ( ( *( uint8_t *)( 0xE00FFFD0 ) & 0x0F ) << 8 )
        |
        ( ( *( uint8_t *)( 0xE00FFFE4 ) & 0xFF ) >> 3 ) |
        ( ( *( uint8_t *)( 0xE00FFFE8 ) & 0x07 ) << 5 ) + 1 ;
    }
    return 0;
}
 

Спасибо! Этот способ работает.
 

apm32f407
JtagId=0xb47                                                                                                                        
DevId=0x413 RevId=0x9 CpuId=0x410fc241

STM32F405
JtagId=0x41                                                                                                                         
DevId=0x413 RevId=0x1001 CpuId=0x410fc241

 

Для APM32 считанный JtagId=0xb47 совпадает с указанным в  даташите JTAG ID code is 0x06413B47, еще бы старшую часть вычитать. Пытался разобраться по CoreSight infrastructure IDs for an ARMv7-M implementation, там черт ногу сломит и все время ссылаются на недоступный JEDEC JEP106.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 минут назад, _3m сказал:

Для APM32 считанный JtagId=0xb47 совпадает с указанным в  даташите JTAG ID code is 0x06413B47

И Вы надеетесь, что он будет таким же во всех других экземплярах APM32?  :sarcastic:  Святая наивность.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 минут назад, jcxz сказал:

И Вы надеетесь, что он будет таким же во всех других экземплярах APM32?  :sarcastic:  Святая наивность.....

Нет, конечно!

Я надеюсь что код будет отличаться от stm-овского 0x41

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/6/2023 at 2:35 PM, jcxz said:

И Вы надеетесь, что он будет таким же во всех других экземплярах APM32?  :sarcastic:  Святая наивность.....

я не надеюсь, я знаю ) этот способ работать будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/5/2023 at 3:53 PM, 0men said:
    // STM32F405 = 0x041
    //  GD32F405 = 0x7A3

uint16_t Get_JTAG_ID(void)
{
    if( *( uint8_t *)( 0xE00FFFE8 ) & 0x08 )
    {
        return ( ( *( uint8_t *)( 0xE00FFFD0 ) & 0x0F ) << 8 )
        |
        ( ( *( uint8_t *)( 0xE00FFFE4 ) & 0xFF ) >> 3 ) |
        ( ( *( uint8_t *)( 0xE00FFFE8 ) & 0x07 ) << 5 ) + 1 ;
    }
    return 0;
}

 

А вы где про эти адреса прочитали ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 часа назад, haker_fox сказал:

Т.к. скорее всего там SWD😀 А что конкретно не получилось? Факты бы.

Я не программист, по этому конкретизировать не могу, со слов программиста получалось зашивать, но не получалось отлаживать, может нужна была еще какая нибудь приблуда от Geehy, не знаю, а под термином "JTAG" я собственно и имел в виду обычный двухпроводный SWD, а не классический JTAG.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/6/2023 at 9:49 PM, dimka76 said:

А вы где про эти адреса прочитали ?

здесь

compatibility sumup between GD32 and STM32_V2.0.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...