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

esaulenka

Свой
  • Постов

    1 459
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные esaulenka


  1. Я в IAR подключаю хидер для NEC 8-битника

    #include "io78f9212.h"

    и всё работает.

    Это хитрая фича IAR'овского ассемблера, что он понимает синтаксис Си-файлов.

    Все остальные ассемблеры, которые я видел, слово "#define", например, не воспринимают.

     

  2. У меня на столе джитаг вообще подключен пучком МГТФ-ов к контактным "пятачкам". Работает без проблем. Частота... я не умею мерять adaptive clocking, но довольно шустро. Разве что дёргать за провода нельзя.

    На производстве в одном изделии пользуются штатным загрузчиком через UART, в другом - специальным переходником, т.е. в массы эта порнография не идёт :)

     

    Вот только сигнальных линий там не 4, а 7. RTCK можно безболезненно убрать, а остальные, как я понимаю, трогать нельзя.

  3. Вопрос вообще интересный. Я б с удовольствием послушал, как вскрываются, например, винбондовские 51-е контроллеры.

     

    У нас в устройстве прошивка закрыта битиком защиты, пользователям предоставляется в зашифрованном виде.

     

    На форуме техподдержки некий деятель выложил пару строчек дизассемблера этой прошивки. Говорит, что фигня все эти ваши защиты :)

     

    Я не сильно копал, но, видимо, способ обойти защиту есть...

  4. Просто на полке 8-разрядники лежат, а вот ARMов немайя...

     

    Что там iosifk про гайку M3 говорил? :)

     

    А на коленке ничего делать не надо. Надо раскрутить начальство (раз есть серверные, значит есть и начальство) на закупку каких-нибудь демо-плат, и на них уже и собрать. Осталось только подобрать что-то нужное (процесор + сеть + макетные "дырочки").

  5. tturist, тренируйте фантазию :)

     

    У нас есть железка с WinCE на ARM9, там загрузчик полностью переписан и обвешан блекджеками и шл... излишествами.

    Цель - на производстве (да и у пользователя тоже) убедиться, что всё железо работает нормально.

     

    Ногодрыг там используется вовсю.

    Хотя основное применение железки, конечно, другое - крутить задачку под WinCE.

  6. По результатам тестов с разными ОС выяснилось, что inf из примера написан через.. плохо.

     

    Вот несколько лучший вариант.

    На 64-битных windows я его так и не проверил, зато оно работает с XP, Vista и Win7.

     

    [Version]
    Signature = "$Windows NT$"
    Class = Ports
    ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318}
    Provider = %MSFT%
    DriverVer = 09/14/2010, 0.0.4.0
    ;;LayoutFile = layout.inf
    
    [DestinationDirs]
    DefaultDestDir = 12
    
    [Manufacturer]
    %MSFT% = Models, NTx86, NTia64, NTamd64
    
    [Models.NTx86]
    %SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF
    
    [Models.NTia64]
    %SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF
    
    [Models.NTamd64]
    %SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF
    
    [Models]
    %SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF
    
    [serialInstall.NT]
    Include = mdmcpq.inf
    AddReg = SerialAddReg
    CopyFiles = FakeModemCopyFilesSection
    
    [serialAddReg.NT]
    HKR,,DevLoader,,*ntkern
    HKR,,NTMPDriver,,usbser.sys
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
    
    [serialInstall.NT.Services]
    Include = mdmcpq.inf
    AddService = usbser,0x0002,LowerFilter_Service_Inst
    
    [strings]
    MSFT = "MSFT"
    SERIAL_DEV = "USB serial port"
    

     

    PS "некий ID" в случае USB называется VID и PID. Их надо менять парой - в контроллере и в данном файле.

  7. Можно попробовать вернуть "как было" - FlashMagic'ом же прошить обратно.

    У Вас, случаем, частота камня жёстко не вбита? "Чистый" камень остаётся в буте и работает на частоте 4 МГц.

    Отключения jtag'а в буте не замечено (хотя я работал только с 236x).

  8. Есть такой макрос определения смещения поля в структуре, в ИАРе он встроенный, его использовать.

    #define OFFSET(type,field) ((uchar *)&(((type *)0)->field) - (uchar *)0)

    Плюс адин к мнению _Pasha, лучше делать #include <stddef.h> и использовать стандартный offsetof().

     

    Вот только топикстартера интересовал другой вопрос :)

  9. У меня почему-то способ, описанный sonycman, работает плохо.

    Прошивка - без проблем, а отладчик периодически прыгает совершенно не туда или показывает дизассемблер, который исходному коду вообще не соответствует.

     

    Хорошо хоть, что а) отладчиком почти не пользуюсь и б) Keil -> RDI -> Segger -> MT-link работает без проблем.

  10. Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам.

    Извините за полный оффтопик, но фразу эту я у вас украду. Она волшебна :biggrin:

     

    По делу мне сказать совершенно нечего.

    Разве что напомнить, что вариант "не заработало - тяни отдельный провод" предусматривает перемычки, которые полностью отключают всю эту самодеятельность внутри устройства.

  11. Кстати.

    Какие бы VID / PID подделать, чтобы WinXP (и WinVista / Win7 хорошо б) самостоятельно установила драйвера на стандартный CDC ?

     

    Сейчас приходится пользователям ещё и inf - файл давать.

     

    Вроде б и нет таких, но вот тут активно рекламируется прошивка, к которой драйвер уже готов.

    http://microsin.ru/content/view/1178/44/

    Попытка украсть оттуда идентификаторы VID_16C0/PID_05E1 результата не дала (вроде б и не надо больше ничего?..).

  12. Кстати, похожую проблему наблюдал в 3-м Кейле.

     

    Кусок кода не хотел "привязываться" к соответствующему куску дизассемблера.

    Решилось временным комментированием большого куска кода, который был не нужен для отладки той проблемы.

     

    Сейчас, кажется, полечилось. Хотя, может быть, просто другой кусок теперь не "отлаживается". Не изучал, джитагом пользуюсь в основном для заливки программы.

     

    Проект не очень большой, 55 килобайт кода, 16 килобайт констант и почти полтора мегабайта (там железо позволяет не мелочиться :) ) в ОЗУ.

  13. Да читал я про это, читал...

     

    У нас просто FAT под WinCE периодически сыпется.

    Перекопал всё, пока без результатов...

     

    Единственное предположение - в Spare Area пишется что-то не то или как-то не так (там нет контрольной суммы, проверить затруднительно...).

    Возможно, стоит перечитывать записанное, может, что и выяснится...

  14. ыыыыыы CE чип энэйблом? Его дёргает P4.31-CS1 у LPC2478.

    Не понял, ну да ладно :) Я не интересовался, как интерфейс нанда устроен у LPC'шек. У меня с NAND'ом работает Samsung'овский процессор, там надо в нужный регистр нужный битик поставить/сбросить.

     

     

    По поводу статусного регистра где про него прочитать, как не в даташите на микруху. В самсунговском шите Table2. Read Staus Register Definition.

    Я ж хочу подробно :)

    Там написано pass/fail. Вот по каким параметрам происходит fail, там не написано.

    Лично у меня добиться состояния fail не получилось (хотя, возможно, я и ошибаюсь...).

  15. Насколько я понимаю, это означает, что эта Ваша 29-я страница только что побилась.

    Соответственно, надо остатки данных куда-то переносить и помечать весь блок как битый.

    апдейт: Именно это и написано в даташите, картинки "Program / Erase Flow Chart"

     

    У меня другой вопрос.

    Поведение регистра статуса где-то подробно расписано?

    Особо интересно, по каким признакам определяется, прошла ли запись/чтение. Экспериментировал с NAND'ом, в котором есть сектора, помеченные как битые - запись/стирание нормально проходят.

     

    PS Wano, а почему Вы чипселектом не дёргаете? Аппаратно как-то работает, что-ли?

  16. zheka, покажите, пожалуйста, где в 158-й строке выложенного diskio.c слово "__inline"

     

    igorenja, Вы не правы. CARM умер, надо искать в документации на RealView'шный компилятор. Я делал подобное через объявление секции кода в ОЗУ и соответствующую прагму (всё есть в документации).

  17. Спасибо за ответы.

    С практикой понятно. Теперь осталось подтянуть теорию :)

     

    Разглядывание даташитов на ATmega, на LPC и спецификации на шину не прояснило, почему нельзя "задерживать" отправку stop.

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