NUC98R. Настройка загрузки rootfs с SD карты в связке с SPI.

11 мес. 1 нед. назад - 5 мес. 2 нед. назад #6370 от AEfimov
В связи с относительно небольшим объемом встроенной FLASH-памяти на отладке NK-NUC98R
в процессе проектирования и эксплуатации возникает необходимость в его увеличении. Одним из решений является использование SD-карты в качестве устройства-контейнера для rootfs. В этом случае загрузчик U-Boot и ядро Linux прошиваются в SPI-Flash (в режиме NAND-Flash подключение rootfs с SD карты не поддерживается), а rootfs, собственно, монтируется с SD карты. Такая конфигурация позволяет использовать несколько разных по содержанию образов rootfs не перепрошивая контроллер каждый раз, когда потребуется внести изменения в rootfs.

Для того чтобы контроллер работал в таком режиме необходимо произвести ряд настроек, в том числе конфигурацию ядра, файловой системы, а также подготовить саму SD карту.


Конфигурация ядра.

В качестве базовой конфигурации используются параметры настройки утилиты menuconfig ядра для работы с SPI-flash (см. соответствующую статью на нашем форуме в этом разделе) за исключением поддержки jffs2.

Дополнительно к этим настройкам включим поддержку SD-карты:

Device Drivers --->				
      <*> MMC/SD/SDIO card support ---> 							
             <*>  MMC block device driver
	<*>  	Use bounce buffer for simple hosts
	<*>  Nuvoton NUC980 SD Card support

Установим поддержку ext3/ext4 - файловой системы:

File systems  ---> 
 	<* > The Extended 3 (ext3) filesystem   
                        [*]   Ext3 POSIX Access Control Lists                             
             [*]   Ext3 Security Labels 

 	< *> The Extended 4 (ext4) filesystem
[*]   Ext4 POSIX Access Control Lists                             
             [*]   Ext4 Security Labels

А также укажем устройство загрузки rootfs в качестве параметра загрузочной строки:

(root=mmcblkp1 rootsftype=ext3 rw console=ttyS0,115200n8 rdinit=/sbin/init mem=64M)


Настройка SD-карты.

Для начала отформатируем носитель файловой системе ext3, для этого в терминале Linux-машины вводим следующие команды:

$ sudo umount /dev/sde1

# sudo fdisk /dev/sde

Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Далее последовательно указываем параметры форматирования:

Expert command (m for help): h
Number of heads (1-256, default 4): 255

Expert command (m for help): s
Number of sectors (1-63, default 62): 63
Warning: setting sector offset for DOS compatiblity

Expert command (m for help): c
Number of cylinders (1-1048576, default 984): 247

Command (m for help):

Создадим и настроим необходимое количество разделов:

Expert command (m for help): r

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4) p
Partition number (1-4): 1
First cylinder (1-247, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-247, default 15): +32M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))
Command (m for help): a
Partition number (1-4): 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4) 
p
Partition number (1-4): 2
First cylinder (6-247, default 6): 6
Last cylinder or +size or +sizeM or +sizeK (6-247, default 247): 247

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

Теперь форматируем созданные разделы (здесь приведен пример создания двух разделов, вы же можете создать нужное вам количество и, например, загрузить в них разные сборки rootfs) :

#  sudo mkfs.vfat -F 32 /dev/sde1 -n FAT
mkfs.vfat 2.11 (12 Mar 2005)
$ sudo mkfs.ext3 /dev/sde2
mke2fs 1.40.8 (13-Mar-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
121920 inodes, 485966 blocks
24298 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=499122176
15 block groups
32768 blocks per group, 32768 fragments per group
8128 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: ^[done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


3. Загрузка rootfs на SD, подготовка отладки.

Распакуем архив с rootfs в корень ext3 раздела SD-карты, содержимое этого раздела должно повторять содержимое целевой папки rootfs.

Теперь установим SD карту в слот SD1, установим джамперы SW2 в режим загрузки с SPI (все переключатели кроме 4-ого в позиции low), также активируем порт SD1, - переключатели SW6 в позиции high.

При загрузке Linux введем в terminal следующие параметры.

#set bootcmd sf probe 0 18000000
#sf read 0x7fc0 0x200000 0x400000
#bootm 0x7fc0
Теперь файловая система загружена с SD-карты и можно устанавливать многочисленные приложения, собирать объемные массивы данных, а также при помощи buildroot подготовить несколько разных сборок rootfs.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.061 секунд
Работает на Kunena форум