SPI Nand Flasher из arduino/launchpad msp430

Тема в разделе "Xbox 360", создана пользователем phat, 04.02.2013.

  1. phat

    phat Пользователь

    Регистрация:
    16.10.2011
    Сообщения:
    198
    Симпатии:
    22
    Вообщем решил реализовать сабж. SPI реализован аппаратно в микроконтроллерах. Но нанд бокса подключают шестью проводами, и возник вопрос что за выводы XEJ и XXX, для чего они нужны, как ними правильно дергать. Планирую написать скечт для перечисленных микроконтроллеров и бинарное приложение под виндовс, которые выложу сдесь. XBOX360_Slim_NandPro_LPCH2148_PIC18F2455_Diagram.jpg
     
  2. RichY

    RichY Администратор

    Регистрация:
    10.05.2011
    Сообщения:
    8.303
    Симпатии:
    1.518
    Есть исходники под пик у глигли в гитхабе, есть и под арм от сквиртов
     
  3. Delfer

    Delfer Пользователь

    Регистрация:
    02.02.2012
    Сообщения:
    324
    Симпатии:
    26
    Есть еще порт для AVR. А я пользовал самодельный клон BlackCat. У меня сначала тоже желание возникло написать подобное приложение для stm32, но как нашел FlashCat - забил. Схема крайне простая, цена минимальная, никакие программаторы не нужны. Если запал останется, могу снять что там происходит на xxx и xej лог. анализатором. Только в холостую, ящик не буду разбирать.
    P.S. идея провальная, так как ни в ардуине, ни в msp430 нет полноценного USB. А потом вы вспомните что бывают еще Jasper с 256Мб...
     
  4. phat

    phat Пользователь

    Регистрация:
    16.10.2011
    Сообщения:
    198
    Симпатии:
    22
    Ричи, всё на асме как я понимаю(((
    Делфер, было-бы неплохо. Позозреваю что на эти пинах что-то примитивное, например флаг защиты от записи.
     
  5. Delfer

    Delfer Пользователь

    Регистрация:
    02.02.2012
    Сообщения:
    324
    Симпатии:
    26
    Что за глупости? https://github.com/G33KatWork/XBox-360-AVR-flasher 100% Си
    Может быть полезно: http://free60.org/NANDPro http://de1fer.ru/?p=188 - моя заметка
     
  6. BanZaY_Pro

    BanZaY_Pro Пользователь

    Регистрация:
    14.10.2012
    Сообщения:
    105
    Симпатии:
    3
    на ардуине уно же есть вроде.
    но я поступил проще: у меня была teensy и я ее допилил до схемки делфера. десяток консолей прошил с помощью этой фигни.
     
  7. phat

    phat Пользователь

    Регистрация:
    16.10.2011
    Сообщения:
    198
    Симпатии:
    22
    Делфер, ты прав идея провальная, только что проверил даже с напаяным кварцем мсп430 больше 9600 бод не дает, а простая математика говорит что, 17301504 / ( 9600/8 ) = 14418 секунд, 240 минут, что медленнее чем по ЛПТ.

    За ссылки спасибо, наверно сделаю себе такой-же девайс.
     
  8. Delfer

    Delfer Пользователь

    Регистрация:
    02.02.2012
    Сообщения:
    324
    Симпатии:
    26
    Не забывайте, что помимо 8 бит данных еще 1 стартовый бит и 1 стоповый. Получается 10 бит на байт. И на 9600 получим 960 байт/сек.
    Я сделал, что обещал.
    Как ведут себя EJ и XX
    http://de1fer.ru/wp-content/uploads/2012/10/scrn.png
    KSK вроде не дергается, он и не используется. На SCK и MOSI только в таком масштабе видно иголки. На самом деле там идут какие-то даные, частота 4Мгц.
    Сессия с логического анализатора:
    http://de1fer.ru/wp-content/uploads/2012/10/noxbox.zip
    Тут только инициализация, к программатору ничего не подключено. Открывать официальным приложением saleae logic analyzer. Ищется в гугле.
    Надеюсь кто-нибудь сделает свой программатор на своевременном и доступном железе.
    P.S. С редактором на форуме совсем грусть. Писать html коды в перемешку с bb-code - совсем убого.
     
  9. phat

    phat Пользователь

    Регистрация:
    16.10.2011
    Сообщения:
    198
    Симпатии:
    22
    Всё оказалось просто. Один раз вначале вызывается эта функция, что видно на анализаторе.

    Код:
    void XSPI_EnterFlashmode(void)
    {
    PINLOW(SPIPORT, XX);
     
    _delay_ms(50);
     
    PINLOW(SPIPORT, SS);
    PINLOW(SPIPORT, EJ);
     
    _delay_ms(50);
     
    PINHIGH(SPIPORT, XX);
    PINHIGH(SPIPORT, EJ);
     
    _delay_ms(50);
    } 
    А кск просто будит флеш

    Код:
    void XSPI_Powerup(void)
    {
    PINLOW(SPIPORT, KSK);
    _delay_ms(5);
    PINHIGH(SPIPORT, KSK);
    _delay_ms(5);
     
    PINLOW(SPIPORT, KSK);
    _delay_ms(5);
    PINHIGH(SPIPORT, KSK);
    _delay_ms(5);
     
    PINLOW(SPIPORT, KSK);
    _delay_ms(5);
    PINHIGH(SPIPORT, KSK);
    _delay_ms(5);
     
    PINLOW(SPIPORT, KSK);
    _delay_ms(5);
    PINHIGH(SPIPORT, KSK);
    }
    Может кому-то поможет...
     

Поделиться этой страницей