Jump to content

    

TOG

Участник*
  • Content Count

    327
  • Joined

  • Last visited

Community Reputation

0 Обычный

About TOG

  • Rank
    Местный

Контакты

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

Информация

  • Город
    Челябинск

Recent Profile Visitors

2115 profile views
  1. Друзья, помогите пожалуйста понять порядок действий при отладке приложения на устройстве под управлением windows CE 6.0. Есть устройство работающее под управлением Windows CE 6.0, я к нему подключаюсь с помощью USB кабеля и ActiveSync драйвера. На устройстве есть приложение, к которому нужно прицепиться отладчиком. Исходных кодов нет. На своем рабочем компе установил такой набор приложений: Windows XP, Visual Studio 2005 team suite, Windows Embedded CE 6.0 Все это работает, могу просматривать файлы на устройстве, просматривать список запущенных процессов. Но не понятно как присоединиться к нужному процессу отладчиком и начать отладку. Пробовал с помощью IDA Pro, нажимаю "attach to process", выбираю процесс, но отладка почему-то не работает, хотя IDA пишет, что "Connection to the Windows CE device has been established." Не активны кнопки step over, step into. Как с помощью Visual Studio 2005 запустить отладку приложения на устройстве вообще не понимаю. Объясните пожалуйста кто нибудь ? (Образ системы windows CE 6.0 есть, скачал с сайта производителя. Само приложение тоже есть, скачал с устройства. Осталось понять как запустить его в режиме отладки или присоединиться к нему отладчиком).
  2. Друзья, есть устройство на Windows CE 6.0. Есть комп с Windows 7. Установил себе на комп "Windows 7 mobile device center", теперь я могу подключиться к устройству с помощью отладчика IDA Pro. В IDA Pro выбираю отладчик Remote WinCE debugger (ActiveSync). Отладчик показывает список запущенных процессов на устройстве, и может подключиться к любому процессу, но дальше происходит непонятное: устройство перезапускается и виснет, а в отладчике не активны функции пошаговой отладки. Активны только кнопки stop и pause, но похоже, что и они не работают. В общем отладка не возможна. Подскажите что я делаю не так ?
  3. Прошивку я считываю правильно, там есть строковые данные и они считываются правильно. Уточню, программа не моя. Я просто прицепился на шину и смотрю анализатором, что там происходит. Потом считываю прошивку с EEPROM. Результаты совпадают. Мне кажется это все же какая-то кодировка
  4. Друзья, есть EEPROM 25AA010 (Serial SPI EEPROM 128 байт). Микроконтроллер C8051F130 пишет туда значение параметра. Я изменяю значения параметра 0, 1, 2, 3, 4 и смотрю, что записалось в EEPROM. Записываются 2 байта, в скобках я привожу двоичный код. Я что-то не могу понять эту логику. Это какая-то специальная кодировка для продления жизни EEPROMa что-ли ? параметр = 0. Это записалось в EEPROM ---> 0x80 (1 0 0 0 0 0 0 0), 0x67 (0 1 1 0 0 1 1 1) параметр = 1. Это записалось в EEPROM ---> 0x86 (1 0 0 0 0 1 1 0), 0x6B (0 1 1 0 1 0 1 1) параметр = 2. Это записалось в EEPROM ---> 0x77 (0 1 1 1 0 1 1 1), 0x8A (1 0 0 0 1 0 1 0) параметр = 3. Это записалось в EEPROM ---> 0x7D (0 1 1 1 1 1 0 1), 0x81 (1 0 0 0 0 0 0 1) параметр = 4. Это записалось в EEPROM ---> 0x83 (1 0 0 0 0 0 1 1), 0x77 (0 1 1 1 0 1 1 1)
  5. Правильно ли я Вас понял, для IDA Pro в качестве точки входа нужно указать адрес из вектора сброса ?
  6. Друзья, пытаюсь загрузить прошивку в bin формате в дизассемблер IDA Pro. Он просит вручную указать точку входа. Микроконтроллер stm32f103. Для тренировки написал несколько своих простеньких программок и попытался понять методику поиска точки входа в main. Не помогло. Может есть какие-то методики поиска точки входа в main ? (статью про носорога видел)
  7. Да именно так. Спасибо Сергей. Придумал вот такие костыли. Это наверно моя самая корявая программа и работает она коряво. Но работает ;) Буду пытаться сделать без этого HAL. while ( HAL_I2C_Slave_Receive(&hi2c, (uint8_t *)tmp, 255, TIMEOUT) != HAL_OK) { if (hi2c.XferSize == 255) // Если за время таймаута ничего не приняли, запускаем прием по новой { break; } else if (hi2c.XferSize == 255 - 1) // Если приняли 1 байт { } else if (hi2c.XferSize == 255 - 2) // Если приняли 2 байта { } else if (hi2c.XferSize == 255 - 3) // Если приняли 3 байта { }
  8. Как я понял когда у мастера больше нечего передавать, он посылает STOP, т.е. при высоком уровне SCL линия SDA переходит с нуля в единицу.
  9. я пишу программу для slave устройства. Master всегда ACK
  10. Я думаю в режиме IT или DMA как-то так: while ( (HAL_I2C_GetState(&hi2c) != HAL_I2C_STATE_READY) ) { } а как в режиме опроса не знаю.
  11. Друзья, не могу понять, вот есть эти замечательные функции приема данных по I2C: HAL_I2C_Slave_Receive(&hi2c, &Buffer, NumBytes, Timeout ) HAL_I2C_Slave_Receive_IT(&hi2c, &Buffer, NumBytes) HAL_I2C_Slave_Receive_DMA(&hi2c, &Buffer, NumBytes) Но как мне быть если неизвестно сколько байт нам пришлют ? Кучу примеров просмотрел, не понимаю.
  12. Друзья, понадобились прецизионные подпружиненные щупы для мультиметра, типа таких (Agilent 34133A). Но их трудно где купить да и дороговато. Может у китайцев есть что-то похожее ?
  13. Друзья, это выход UART процессора PowerPC. Нагрузки никакой нет. Ток потребления процессора с норме, не греется. Измерил сопротивление (UART -- земля) = 21 кОм, (UART -- +3.3V) = 21 кОм. Накрылся UART ? Или может быть какая-то другая причина ? И можно ли что-то с этим сделать не меняя процессор ? (Доступа к прошивке у меня нет)
  14. Спасибо Vlad_G ! Очень похож.
  15. Друзья, помогите пожалуйста опознать разъем