unreal_himan
Участник-
Постов
32 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о unreal_himan
-
Звание
Участник
-
В том-то и дело, что надо при сборке выбрать нужные пункты в menuconfig. Прошивка u-boot, который идет с готовым образом на microsd, в spi флешку ругается что не умеет грузится по spl.
-
У меня вот какая ситуация: Using username "root". ___ ____ _ _ _ _ ____ / _ \| _ \(_) | | (_) |_ ___ |___ \ | | | | |_) | | | | | | __/ _ \ __) | | |_| | __/| | | |___| | || __/ / __/ \___/|_| |_| |_____|_|\__\___| |_____| Welcome to Armbian 21.08.2 Focal with Linux 5.10.60-sunxi64 System load: 10% Up time: 2 min Memory usage: 26% of 985M IP: 192.168.137.2 CPU temp: 55°C Usage of /: 20% of 29G Last login: Mon Sep 27 16:05:53 2021 orangepilite2:~:# ls -l /dev/spi* crw------- 1 root root 153, 0 Sep 27 16:39 /dev/spidev0.0 orangepilite2:~:# lsmod | grep -i spi spidev 24576 0 orangepilite2:~:# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=50000 flashrom v1.2 on Linux 5.10.60-sunxi64 (aarch64) flashrom is free software, get the source code at https://flashrom.org Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns). No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. orangepilite2:/boot:# /boot/armbianEnv.txt [B---] 0 L:[ 1+12 13/ 13] *(298 / 298b) <EOF> [*][X] verbosity=1 bootlogo=false console=both disp_mode=1920x1080p60 overlay_prefix=sun50i-h6 rootdev=UUID=bd09b6e0-33f0-4eb9-b7dd-b94e1ed1e1de rootfstype=ext4 overlays=spi-spidev param_spidev_spi_bus=0 param_spidev_spi_cs=0 param_spidev_max_freq=2000000 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u u-boot, который выложен выше выдает вот что и дальше не грузится U-Boot SPL 2021.10-rc4-00055-g8284d6f838 (Sep 27 2021 - 14:37:51 +0300)DRAM: 1024 MiBTrying to boot from sunxi SPI Сейчас все грузится с microsd карточки. Она далеко не вечная и хотелось бы иметь возможность грузится по сети и с USB флешки. Для этого как раз нужна эта флешка, она есть распаянная на некоторых платах
-
Драйвер не видит стандартный spidev. Длинна уменьшена до 2.5см. Резистор поставлен. Ничего не изменилось. Подключено точно правильно, потому что начинает читать u-boot, если неправильно подключить, то ничего не происходит. могу дать удаленный доступ Так тоже попробовал, не работает. Еще варианты есть? есть большое подозрение, что проблема программная
-
Флешка припаяна к маленькой платке со светодиодом, конденсатором и резистором. Завернул сначала в бумагу и фольгу сверху - без изменений.
-
подключена к внешнему разъему ардуиновскими проводами длинной 10см
-
флешка W25Q64FV. Подключена к spi0, cs к cs0. Но flashrom почему-то ее не видит через стандартный драйвер в armbian, видит через ch341 программатор
-
U-Boot SPL 2021.10-rc4-00055-g8284d6f838 (Sep 27 2021 - 14:37:51 +0300) DRAM: 1024 MiB Trying to boot from sunxi SPI Уже лучше. Но дальше не идет.
-
И меню с выбором носителя и этот пункт прописан в конфиге, все равно при загрузке u-boot ругается U-Boot SPL 2020.10-armbian+ (Sep 23 2021 - 14:27:18 +0300) DRAM: 1024 MiB SPL: Unsupported Boot Device! SPL: failed to boot from all boot devices ### ERROR ### Please RESET the board ###
-
Здравствуйте форумчане. Имеется плата orange_pi_lite2 с allwinner_h6. Хочу сделать чтобы грузила u-boot с spi флешки с дальнейшим выбором носителя для загрузки, не получается собрать образ u-boot, чтобы он грузился и давал такой выбор. Есть гуру по настройкам u-boot?
-
К сожалению чего-нибудь дельного найти не удалось для микроконтроллеров. Для fatfs есть реализация exfat (вроде как там есть выравнивание износа). Можно поковыряться здесь (есть работа с голой nand) https://github.com/atmelcorp/atmel-software-package
-
atmel sam e70 + SD (EMMC)
unreal_himan опубликовал тема в Microchip (Atmel)
Здравствуйте, форумчане. Проблема с флешками. В качестве основы для проекта брал ASF от атмел для работы с SD/MMC, есть учебная плата SAM E70 XPLD с флешкой SDHC на 32 гб и кастомная плата с emmc того же объема и работают одинаково. Почему-то при записи/чтении получаются одинаковые данные по 512 байт. Причем повторяющиеся данные получаются и при односекторном режиме и мультисекторном. проекты Iar и atmel studio работают тоже одинаково. Может кто сталкивался с таким? Что я делаю не так?.Помогите пожалуйста Полный код во вложении #define blocks_8k_in_file 5730 // SD_MMC_BLOCK_SIZE #define SD_MMC_BLOCK_count 8192 / SD_MMC_BLOCK_SIZE // write_buffer COMPILER_ALIGNED(32) static uint8_t write_buf_pack_1[SD_MMC_BLOCK_count * SD_MMC_BLOCK_SIZE] = {0}; COMPILER_ALIGNED(32) static uint8_t write_buf_pack_2[SD_MMC_BLOCK_count * SD_MMC_BLOCK_SIZE] = {0}; int main(void) { uint8_t slot = 0; sd_mmc_err_t err; const usart_serial_options_t usart_serial_options = { .baudrate = CONF_TEST_BAUDRATE, .charlength = CONF_TEST_CHARLENGTH, .paritytype = CONF_TEST_PARITY, .stopbits = CONF_TEST_STOPBITS, }; irq_initialize_vectors(); cpu_irq_enable(); sysclk_init(); board_init(); stdio_serial_init(CONF_TEST_USART, &usart_serial_options); time_tick_init(); // Initialize SD MMC stack sd_mmc_init(); printf("\x0C\n\r-- SD/MMC/SDIO Card Example --\n\r"); printf("-- Compiled: %s %s --\n\r", __DATE__, __TIME__); while (1) { if (slot == sd_mmc_nb_slot()) { slot = 0; } printf("Please plug an SD, MMC or SDIO card in slot %d.\n\r", slot+1); // Wait for a card and ready do { err = sd_mmc_check(slot); if ((SD_MMC_ERR_NO_CARD != err) && (SD_MMC_INIT_ONGOING != err) && (SD_MMC_OK != err)) { printf("Card install FAILED\n\r"); printf("Please unplug and re-plug the card.\n\r"); while (SD_MMC_ERR_NO_CARD != sd_mmc_check(slot)) { } } } while (SD_MMC_OK != err); // Display basic card information main_display_info_card(slot); /* Test the card */ if (sd_mmc_get_type(slot) & CARD_TYPE_SDIO) { // Test CIA of SDIO card main_test_sdio(slot); } if (sd_mmc_get_type(slot) & (CARD_TYPE_SD | CARD_TYPE_MMC)) { // SD/MMC Card R/W main_test_memory(slot); } printf("Test finished, please unplugged the card.\n\r"); while (SD_MMC_OK == sd_mmc_check(slot)) { } slot++; } } /** * \brief Display basic information of the card. * \note This function should be called only after the card has been * initialized successfully. * * \param slot SD/MMC slot to test */ static void main_display_info_card(uint8_t slot) { printf("Card information:\n\r"); printf(" "); switch (sd_mmc_get_type(slot)) { case CARD_TYPE_SD | CARD_TYPE_HC: printf("SDHC"); break; case CARD_TYPE_SD: printf("SD"); break; case CARD_TYPE_MMC | CARD_TYPE_HC: printf("MMC High Density"); break; case CARD_TYPE_MMC: printf("MMC"); break; case CARD_TYPE_SDIO: printf("SDIO\n\r"); return; case CARD_TYPE_SD_COMBO: printf("SD COMBO"); break; case CARD_TYPE_UNKNOWN: default: printf("Unknow\n\r"); return; } printf("\n\r %d MB\n\r", (uint16_t)(sd_mmc_get_capacity(slot)/1024)); } uint8_t read_fram_file(uint16_t num_of_file, uint32_t num_of_page_file, uint8_t *buf_read) { uint32_t t_num_page = 0; t_num_page = (num_of_file-1)*blocks_8k_in_file+num_of_page_file; for (uint8_t i = 0;i<SD_MMC_BLOCK_count-1;i++) { if (SD_MMC_OK != sd_mmc_init_read_blocks(0, t_num_page+i, 1/*SD_MMC_BLOCK_count*/)) { printf("[FAIL]\n\r"); return 1; } if (SD_MMC_OK != sd_mmc_start_read_blocks(buf_read+i*512, 1/*SD_MMC_BLOCK_count*/)) { printf("[FAIL]\n\r"); return 1; } if (SD_MMC_OK != sd_mmc_wait_end_of_read_blocks(false)) { printf("[FAIL]\n\r"); return 1; } } return 0; } uint8_t write_fram_file(uint16_t num_of_file, uint32_t num_of_page_file, uint8_t *buf_write) { uint32_t t_num_page = (num_of_file-1)*blocks_8k_in_file+num_of_page_file; for (uint8_t i = 0;i<SD_MMC_BLOCK_count;i++) { if (SD_MMC_OK != sd_mmc_init_write_blocks(0, t_num_page+i, 1/*SD_MMC_BLOCK_count*/)) { printf("[FAIL] init write flash \n\r"); return 1; } if (SD_MMC_OK != sd_mmc_start_write_blocks(buf_write+i*512, 1/*SD_MMC_BLOCK_count*/)) { printf("[FAIL] write flash \n\r"); return 1; } if (SD_MMC_OK != sd_mmc_wait_end_of_write_blocks(false)) { printf("[FAIL] wait write flash \n\r"); return 1; } } return 0; } /** * \brief Card R/W tests * * \param slot SD/MMC slot to test */ static void main_test_memory(uint8_t slot) { for (uint32_t i=1; i<100; i++) { for (uint32_t j = 0; j < (8192/4 ); j+=4) { write_buf_pack_1[j] = 0x55; write_buf_pack_1[j+1] = 0xBB; write_buf_pack_1[j+2] = 0xAA; write_buf_pack_1[j+3] = 0xEE; if (j%512==0) { uint8_t tmp1 = j/128 + 1; write_buf_pack_1[j] = tmp1; write_buf_pack_1[j+1] = 0x0; write_buf_pack_1[j+2] = 0x0; write_buf_pack_1[j+3] = 0x0; } } write_fram_file(40, i, write_buf_pack_1); for (uint32_t k = 0; k < (8192); k++) { write_buf_pack_1[k] = 0x00000000; } } for (uint32_t i=1; i<100; i++) { read_fram_file(40, i, write_buf_pack_2); //здесь write_buf_pack_2 совпадает с write_buf_pack_1 только первыми 512 байтами for (uint32_t k = 0; k < (8192); k++) { write_buf_pack_2[k] = 0x00000000; } } } SD_MMC_EXAMPLE777777.rar -
запустить fatfs для nand
unreal_himan ответил unreal_himan тема в Предлагаю работу
Возможен вариант без файловой системы. Надо запустить nand в таком виде: чтение блоком, запись блоком и проверку на сбойные блоки В свете последних событий теперь можно использовать ОС и любую ФС. Осталось помочь с иницилизацией и конфигурировании nand флешей -
запустить fatfs для nand
unreal_himan ответил unreal_himan тема в Предлагаю работу
Ребят, У атмела в примерах fatfs уже адаптирован для nand. Для моих задач вполне хватит этой файловой системы, там немного адаптации кода для работы с конкретным нанд нужно, увы но у меня опыта не немного, времени много уходит. Запись на флешки будет около 1мбит. А по поводу других файловых систем то они под ОС, без оси я не нашел рабочего ничего. Если можно, то не надо предлагать код, который еще надо адаптировать за 1500USD. А по поводу доступа с компа к файловой системе через usb (чтобы как флешка определялась), это было бы идеальным вариантом, но я так понял что не получится сделать без специального контроллера. -
запустить fatfs для nand
unreal_himan опубликовал тема в Предлагаю работу
Предлагаю разовую работу. Надо запустить fatfs (запись и чтение) для nand на кастомной плате с процессором Atmel E70. Стоят две nand флеши. Работаю в atmel studio. ОС использовать нельзя. Плата доступна удаленно. Подробности по компонентам и оплате могу выслать письмом. Может кто-нибудь в теме по данному вопросу -
микросхема MICREL ksz8041ftl
unreal_himan ответил unreal_himan тема в ARM, 32bit
Иницилизация этих двух линий для микросхем одинаковая?