Важная информация

User Tag List

Страница 33 из 34 ПерваяПервая ... 293031323334 ПоследняяПоследняя
Показано с 321 по 330 из 331

Тема: SD-контроллер от vinxru

  1. #321
    Member
    Регистрация
    08.12.2023
    Адрес
    г. Жуковский
    Сообщений
    118
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Постоянно

  2. #322
    Activist Аватар для cy6
    Регистрация
    27.04.2015
    Адрес
    г. Пенза
    Сообщений
    370
    Спасибо Благодарностей отдано 
    251
    Спасибо Благодарностей получено 
    56
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Значит, мега работает. Это она так об ошибке сообщает, что SD карту не видит.
    wtf

  3. #323
    Member
    Регистрация
    08.12.2023
    Адрес
    г. Жуковский
    Сообщений
    118
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Какие требования к карте? У меня 4гб, FAT32. Все дорожки прозвонил, ни замыканий, ни разрывов нет.

  4. #324
    Member
    Регистрация
    08.12.2023
    Адрес
    г. Жуковский
    Сообщений
    118
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поставил другую карту, но тоже 4гб. С ней светодиод долго горит, потом начинает мигать. Наверное надо карту меньшего размера? Или в FAT32 надо размер кластера ставить не по умолчанию?

  5. #325
    Activist Аватар для cy6
    Регистрация
    27.04.2015
    Адрес
    г. Пенза
    Сообщений
    370
    Спасибо Благодарностей отдано 
    251
    Спасибо Благодарностей получено 
    56
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от sd Посмотреть сообщение
    я сейчас посмотрел по кодам, насколько я помню команды ассемблера в кодах. Этот файл именно этот загрузчик, что ассемблеровский лист выше я загрузил и содержит до 89h , а с 8ah идет какой то кусок кода ркшного монитора к которому обращалась sdbios, что этот кусок делает сейчас не помню, но можно дисасеблировать и посмотреть. Какие там реальные исходники были понятия не имею, я это сделал из того, что подруку попалось, просто адаптировав, под те адреса, где у меня ВВ55 стоит и чтобы с монитором микроши работало.
    Очень жаль, что на коленке и нету исходников. Посмотрите насколько отличается содержимое загрузчика и ПЗУ из Вашего архива.

    Скриншот здесь вставить не удалось, к сожалению. Все ужимается просто в га**но.
    boot.rk.asm
    boot_e000.hex.asm

    Тут даже команды RST удалены, по понятной причине.

    - - - Добавлено - - -

    Цитата Сообщение от sd Посмотреть сообщение
    Сам shell наверное без исправлений уже, а как был.
    Нет сам shell не просто исправлен, а даже размер другой.

    - - - Добавлено - - -

    P. S. дизассемблировано дизассемблером от Виталия.
    Последний раз редактировалось cy6; 22.04.2024 в 09:28.
    wtf

  6. #326
    Activist
    Регистрация
    02.01.2021
    Адрес
    г. Дмитров
    Сообщений
    319
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    24 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    повторюсь еще раз, что в моем файле этот код, что ниже (Он видимо немного переделан мною, что бы работала с адреса 0е000h, плюс процедура монитора от рк рк-86 эта процедура INIT_VIDEO = 0F82DH

    ; SD BIOS for Computer "Radio 86RK" / "Apogee BK01"
    ; (c) 09-10-2014 vinxru ([email protected])

    .org 0e000h

    MONITOR equ 0F89dh ; Адрес собрата в Монитор
    USER_PORT equ 0f000H ; Адрес КР580ВВ55
    SEND_MODE equ 10000000b ; Режим передачи (1 0 0 A СH 0 B CL)
    RECV_MODE equ 10010000b ; Режим приема (1 0 0 A СH 0 B CL)

    ; Коды передаваемые микроконтроллером

    ERR_START equ 040h ; МК переключен в режим приема команд
    ERR_WAIT equ 041h ; МК выполняет команду
    ERR_OK_DISK equ 042h ; Накопитель исправен, микроконтроллер готов к приему команды
    ERR_OK equ 043h ; Команда выполнена
    ERR_OK_READ equ 044h ; МК готов передать следующий блок данных
    ERR_OK_ADDR equ 047h ; МК готов передать адрес загрузки
    ERR_OK_BLOCK equ 04Fh

    ;----------------------------------------------------------------------------
    ; Точка входа

    Entry:
    ; Первым этапом происходит синхронизация с контроллером
    ; 256 попыток. Для этого в регистр C заносится 0
    MVI C, 0

    Boot:
    ; Режим передачи (освобождаем шину) и инициализируем HL
    CALL RecvMode

    JMP Boot2

    ;----------------------------------------------------------------------------
    ; Отправка и прием байта (в HL должен находится USER_PORT)

    Rst1:
    ; Шина адреса используется как тактовый сигнал
    INX H
    MVI M, 20h
    MVI M, 0
    DCX H
    ; Прием байта
    MOV A, M
    RET

    ;----------------------------------------------------------------------------
    ; Ожидание готовности МК

    Rst2:
    WaitForReady:
    call Rst1
    CPI ERR_WAIT
    JZ WaitForReady
    RET

    ;----------------------------------------------------------------------------

    ; Начало любой команды (это шина адреса)
    Boot2:
    INR L
    MVI M, 0
    MVI M, 44h
    MVI M, 40h
    MVI M, 0h
    DCR L

    ; Если есть синхронизация, то контроллер ответит ERR_START по шине данных
    call Rst1
    CPI ERR_START
    JNZ RetrySync

    ; Инициализация флешки
    call Rst2
    CPI ERR_OK_DISK
    JNZ RetrySync

    ; Режим передачи
    call Rst1
    MVI A, SEND_MODE
    CALL SetMode

    ; Код команды BOOT
    MVI M, 0
    call Rst1

    ; Режим приема
    CALL RecvMode

    ; Это ответ команды BOOT
    call Rst2
    CPI ERR_OK_ADDR
    JNZ RetrySync

    ; Адрес загрузки в BC
    call Rst1
    MOV C, A
    call Rst1
    MOV B, A

    ; Сохраняем в стек адрес запуска
    PUSH B

    ; Файл может быть разбит на несколько частей
    RecvLoop:
    ; Все части загружены, можно запускать файл.
    call Rst2
    CPI ERR_OK_READ
    JZ Rst1

    ; Если МК прочитал блок без ошибок, будет передан ERR_OK_BLOCK
    CPI ERR_OK_BLOCK
    JNZ PrintError

    ; Размер блока данных
    call Rst1
    MOV E, A
    call Rst1
    MOV D, A

    ; Принимаем блок данных
    RecvBlock:
    MOV A, E
    ORA D
    JZ RecvLoop
    call Rst1
    STAX B
    INX B
    DCX D
    JMP RecvBlock

    ;----------------------------------------------------------------------------
    ; Повторные попыки

    RetrySync:
    ; Попытки
    DCR C
    JNZ Boot

    ;----------------------------------------------------------------------------
    ; Вывод кода ошибки

    PrintError:
    CALL 0F815h
    JMP MONITOR
    ;----------------------------------------------------------------------------
    ; Установка режима приема или передачи

    RecvMode:
    MVI A, RECV_MODE

    SetMode:
    LXI H, USER_PORT+3
    MOV M, A
    MVI L, 0
    RET

    .End

    - - - Добавлено - - -

    Цитата Сообщение от cy6 Посмотреть сообщение
    Нет сам shell не просто исправлен, а даже размер другой.
    Я не знаю откуда у меня этот shell, но я его не исправлял... Да и насколько я понимаю, можете туда вообще любой из этих шеллов приложить. Исправлять нужно было только sd bios

    - - - Добавлено - - -

    Цитата Сообщение от cy6 Посмотреть сообщение
    Очень жаль, что на коленке и нету исходников. Посмотрите насколько отличается содержимое загрузчика и ПЗУ из Вашего архива.

    Скриншот здесь вставить не удалось, к сожалению. Все ужимается просто в га**но.
    boot.rk.asm
    boot_e000.hex.asm

    Тут даже команды RST удалены, по понятной причине.

    - - - Добавлено - - -


    Нет сам shell не просто исправлен, а даже размер другой.

    - - - Добавлено - - -

    P. S. дизассемблировано дизассемблером от Виталия.

    Цитата Сообщение от cy6 Посмотреть сообщение
    boot_e000.hex.asm

    Тут даже команды RST удалены, по понятной причине.

    - - - Добавлено - - -

    Сообщение от sd
    Сам shell наверное без исправлений уже, а как был.
    Нет сам shell не просто исправлен, а даже размер другой.

    - - - Добавлено - - -

    P. S. дизассемблировано дизассемблером от Виталия.
    Ну этот дизассемблер ровно тот код что выше у вас и показал...

    - - - Добавлено - - -

    Цитата Сообщение от cy6 Посмотреть сообщение
    Тут даже команды RST удалены, по понятной причине.
    и в этом коде нет коман RST то есть наверное изначально были, но тот код выше переделан немного мною значит

    - - - Добавлено - - -

    Вот этот код процедуры из ркшного монитора 0F82DH


    CNST1 EQU 0D001h ; [1] ; 53249 ; -12287
    CNST2 EQU 0F003h ; [1] ; 61443 ; -4093
    CNST3 EQU 0F808h ; [1] ; 63496 ; -2040


    PUSH H
    LXI H, CNST1
    MVI M, 00h
    DCX H
    MVI M, 4Dh ; 77 ; 'M'
    MVI M, 1Dh ; 29
    MVI M, 99h ; 153 ; -103
    MVI M, 93h ; 147 ; -109
    INX H
    MVI M, 27h ; 39 ; '''
    MOV A, M
    LBL7:
    MOV A, M
    ANI 20h ; 32 ; ' '
    JZ LBL7
    LXI H, CNST3
    MVI M, 80h ; 128 ; -128
    MVI L, 04h ; 4
    MVI M, 0D0h ; 208 ; -48
    MVI M, 76h ; 118 ; 'Ж'
    INR L
    MVI M, 23h ; 35 ; '#'
    MVI M, 49h ; 73 ; 'I'
    MVI L, 08h ; 8
    MVI M, 0A4h ; 164 ; -92
    POP H
    RET

    - - - Добавлено - - -

    к этой процедуре как раз sdbios и обращался. И все исправления в нем помоему закончились ее адресом.
    Последний раз редактировалось sd; 22.04.2024 в 11:30.

  7. #327
    Activist Аватар для cy6
    Регистрация
    27.04.2015
    Адрес
    г. Пенза
    Сообщений
    370
    Спасибо Благодарностей отдано 
    251
    Спасибо Благодарностей получено 
    56
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от sd Посмотреть сообщение
    Вот этот код процедуры из ркшного монитора 0F82DH
    Да, это "п/п перезапуск видеоконтроллера" из Монитора.

    А зачем она тут? Что то сбивает синхру?
    wtf

  8. #328
    Activist
    Регистрация
    02.01.2021
    Адрес
    г. Дмитров
    Сообщений
    319
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    24 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от cy6 Посмотреть сообщение
    А зачем она тут? Что то сбивает синхру?
    Изначальный код sdbios к ней в начале обращался, зачем честно говоря лень было разбираться, поэтому этот кусок кода я просто в ПЗУ после загрузчика и добавил. Самый простой и быстрый путь был.

  9. #329
    Member
    Регистрация
    08.12.2023
    Адрес
    г. Жуковский
    Сообщений
    118
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Какой-то трындец с этой платой!

    Заменил 328p на Атмегу 8, всё прошивается, замыканий нет, разрывов нет, три флэшки разных калибров в наличии. Мигает светодиодом постоянно, и всё!

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

    Печаль ппц.

  10. #330
    Activist Аватар для cy6
    Регистрация
    27.04.2015
    Адрес
    г. Пенза
    Сообщений
    370
    Спасибо Благодарностей отдано 
    251
    Спасибо Благодарностей получено 
    56
    Поблагодарили
    32 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hammer Посмотреть сообщение
    купил фен, и научился им работать
    Это самое главное

    Хотя, эта мега паяльником тоже паяется )

    Цитата Сообщение от Hammer Посмотреть сообщение
    Мигает светодиодом постоянно
    Мигание означает, что либо нету связи с картой, либо что то не нравится.

    sd_check()

    Код:
    /**************************************************************************
    *  Проверка готовности/наличия карты                                      *
    **************************************************************************/
    
    BYTE sd_check() {
      BYTE i = 0;
      do { 
        sd_sendCommand(APP_CMD, 0);
        if(sd_sendCommand(SD_SEND_OP_COND, 0x40000000) == 0) return 0;
      } while(--i);
      return 1;
    }
    [свернуть]


    fs_check()

    Код:
    /**************************************************************************
    *  Проверка наличия диска и если нужно, то его инициализация              *
    **************************************************************************/
    
    BYTE fs_check() {
      if(!sd_check()) return 0;
      return fs_init();
    }
    [свернуть]


    fs_init()

    Код:
    /**************************************************************************
    *  Инициализация                                                          *
    **************************************************************************/
    
    BYTE fs_init() {
      DWORD bsect, fsize, tsect;
    
      /* Сбрасываем оптимизацию */
      fs_fatoptim = 2;
    
      /* Предотвращаем ошибки программиста */
    #ifndef FS_DISABLE_CHECK
      fs_file.opened = OPENED_NONE;
    #ifndef FS_DISABLE_SWAP  
      fs_secondFile.opened = OPENED_NONE;
    #endif 
      fs_type = FS_ERROR;
    #endif
    
      /* Инициализация накопителя */
      if(sd_init()) return 1;
      
      /* Ищем файловую систему */
      bsect = 0;               
      while(1) {                 
        if(sd_readBuf(bsect)) return 1;
        if(LD_WORD(buf + 510) == 0xAA55) {
          if(LD_WORD(buf + BS_FilSysType  ) == 0x4146) break;
          if(LD_WORD(buf + BS_FilSysType32) == 0x4146) break;
          /* Возможно это MBR */       
          if(bsect == 0 && buf[MBR_Table+4]) { 
            bsect = LD_DWORD(buf + (MBR_Table + 8));
            if(bsect != 0) continue;
          }      
        }   
    abort_noFS:
        lastError = ERR_NO_FILESYSTEM; return 1;
      }
            
      /* Размер таблицы FAT в секторах */
      fsize = LD_WORD(buf + BPB_FATSz16);
      if(fsize == 0) fsize = LD_DWORD(buf + BPB_FATSz32);
      
      /* Размер файловой системы в секторах */
      tsect = LD_WORD( buf + BPB_TotSec16);  
      if(tsect == 0) tsect = LD_DWORD(buf + BPB_TotSec32);
      
      /* Размер корневого каталога (должно быть кратно 16 и для FAT32 должно быть рано нулю) */
      fs_n_rootdir = LD_WORD(buf + BPB_RootEntCnt);
      
      /* Адреса таблиц FAT в секторах */
      fs_fatbase  = bsect + LD_WORD(buf + BPB_RsvdSecCnt);
      fs_fatbase2 = 0;
      if(buf[BPB_NumFATs] >= 2) fs_fatbase2 = fs_fatbase + fsize;
    
      /* Кол-во секторов на кластер */
      fs_csize = buf[BPB_SecPerClus];
    
      /* Кол-во кластеров */
      fsize *= buf[BPB_NumFATs];
      fs_n_fatent = (tsect - LD_WORD(buf + BPB_RsvdSecCnt) - fsize - fs_n_rootdir / 16) / fs_csize + 2;
    
      /* Адрес 2-ого кластера */
      fs_database = fs_fatbase + fsize + fs_n_rootdir / 16;
      
      /* Определение файловой системы */
      
      /* FAT 12 */
      if(fs_n_fatent < 0xFF7) goto abort_noFS; 
      
      /* FAT 16 */
      if(fs_n_fatent < 0xFFF7) {
        fs_dirbase = fs_fatbase + fsize; 
        fs_type = FS_FAT16;
        return 0;
      }    
       
      /* FAT 32 */
      fs_dirbase = LD_DWORD(buf + BPB_RootClus);
      
      /* Сбрасываем счетчик свободного места */
      if(LD_WORD(buf + BPB_RsvdSecCnt)>0) {
        bsect++;
        if(sd_readBuf(bsect)) return 1;
        if(LD_DWORD(buf) == 0x41615252 && LD_DWORD(buf + 0x1E4) == 0x61417272 && LD_DWORD(buf + 0x1FC) == 0xAA550000) {
          LD_DWORD(buf + 0x1E8) = 0xFFFFFFFF;
          LD_DWORD(buf + 0x1EC) = 0xFFFFFFFF;
          if(sd_writeBuf(bsect)) return 1;
        }
      }
      fs_type = FS_FAT32;
          
      return 0;
    }
    [свернуть]


    - - - Добавлено - - -

    Цитата Сообщение от Hammer Посмотреть сообщение
    Заменил 328p на Атмегу 8
    Не забывайте, что прошивка у них разная.
    wtf

Страница 33 из 34 ПерваяПервая ... 293031323334 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Демка "Звёздные войны" для Апогея от Vinxru
    от Kakos_nonos в разделе Радио-86РК
    Ответов: 4
    Последнее: 12.07.2014, 21:57
  2. весточка от Vinxru
    от dk_spb в разделе Орион
    Ответов: 6
    Последнее: 15.03.2014, 19:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •