Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
orange_pi_one [2017/08/08 17:41] reug |
orange_pi_one [2017/09/03 22:17] (текущий) reug [Установка ARM Toolchain и настройка окружения] |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
===== Ссылки ===== | ===== Ссылки ===== | ||
+ | * sunxi: video: Add video driver for H3 SoC (https://patchwork.ozlabs.org/patch/705339/) | ||
+ | * Видео в U-Boot (https://forum.armbian.com/index.php?/topic/2864-h2h3h5a64-disp2-u-boot-video-driver/&page=4) | ||
* http://orangepi.pp.ua/index.php/topic,406.15.html?PHPSESSID=32008a926e97c20dd94bbaa03a46789d | * http://orangepi.pp.ua/index.php/topic,406.15.html?PHPSESSID=32008a926e97c20dd94bbaa03a46789d | ||
* https://wiki.alpinelinux.org/wiki/DIY_Fully_working_Alpine_Linux_for_Allwinner_and_Other_ARM_SOCs | * https://wiki.alpinelinux.org/wiki/DIY_Fully_working_Alpine_Linux_for_Allwinner_and_Other_ARM_SOCs | ||
Строка 41: | Строка 43: | ||
<code bash> | <code bash> | ||
ln -s gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/gcc-linaro | ln -s gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/gcc-linaro | ||
+ | </code> | ||
+ | |||
+ | Примечание: данная сборка имеет множество повторяющихся файлов. Данный скрипт освободит 137 Мбайт. | ||
+ | Запускать из каталога gcc-linaro. | ||
+ | <code> | ||
+ | cd bin | ||
+ | |||
+ | rm arm-linux-gnueabihf-c++ | ||
+ | ln -s arm-linux-gnueabihf-g++ arm-linux-gnueabihf-c++ | ||
+ | rm arm-linux-gnueabihf-gcc | ||
+ | ln -s arm-linux-gnueabihf-gcc-6.3.1 arm-linux-gnueabihf-gcc | ||
+ | rm arm-linux-gnueabihf-ld | ||
+ | ln -s arm-linux-gnueabihf-ld.bfd arm-linux-gnueabihf-ld | ||
+ | |||
+ | cd .. | ||
+ | |||
+ | cd arm-linux-gnueabihf | ||
+ | |||
+ | rm -r lib | ||
+ | ln -s libc/lib lib | ||
+ | |||
+ | rm bin/* | ||
+ | for t in ar as ld ld.bfd ld.gold nm objcopy objdump ranlib readelf strip | ||
+ | do | ||
+ | ln -s ../../bin/arm-linux-gnueabihf-$t bin/$t | ||
+ | done | ||
+ | |||
+ | rm libc/usr/libexec/getconf/* | ||
+ | for t in POSIX_V6_ILP32_OFF32 POSIX_V6_ILP32_OFFBIG POSIX_V7_ILP32_OFF32 POSIX_V7_ILP32_OFFBIG XBS5_ILP32_OFF32 XBS5_ILP32_OFFBIG | ||
+ | do | ||
+ | ln -s ../../bin/getconf libc/usr/libexec/getconf/$t | ||
+ | done | ||
+ | |||
+ | cd .. | ||
+ | |||
+ | cd share/man/man1 | ||
+ | rm arm-linux-gnueabihf-g++.1 | ||
+ | ln -s arm-linux-gnueabihf-gcc.1 arm-linux-gnueabihf-g++.1 | ||
</code> | </code> | ||
Строка 127: | Строка 167: | ||
Имеется еще один патч https://patchwork.kernel.org/patch/9390817/, который может будет полезен для других плат на базе Allwinner H3. | Имеется еще один патч https://patchwork.kernel.org/patch/9390817/, который может будет полезен для других плат на базе Allwinner H3. | ||
+ | |||
+ | Включаем встроенные в SoC UART1 и UART2 при необходимости (аналогично с UART3). Для этого в файле | ||
+ | ''arch/arm/boot/dts/sun8i-h3-orangepi-one.dts'' в секциях настройки ''&uart1'' и ''&uart2'' исправляем ''status'' с ''disabled'' на ''okay'': | ||
+ | <code> | ||
+ | &uart1 { | ||
+ | pinctrl-names = "default"; | ||
+ | pinctrl-0 = <&uart1_pins>; | ||
+ | status = "okay"; | ||
+ | }; | ||
+ | |||
+ | &uart2 { | ||
+ | pinctrl-names = "default"; | ||
+ | pinctrl-0 = <&uart2_pins>; | ||
+ | status = "okay"; | ||
+ | }; | ||
+ | </code> | ||
+ | После загрузки системы данные порты будут видны как ''/dev/ttyS1'' и ''/dev/ttyS2'' соответственно. | ||
+ | Порт UART0 ''/dev/ttyS0'' - консоль управления, выводы которой (GND,TX,RX) выведены на плате отдельно около разъема RJ-45. Расположение выводов UART1 и UART2 см. на схеме ниже. | ||
+ | Описание конкретных выводов для портов указано в файле ''arch/arm/boot/dts/sunxi-h3-h5.dtsi'', который должен помочь на случай необходимости использования RTS/CTS. | ||
Выбираем базовый конфигурационный файл для сборки ядра: | Выбираем базовый конфигурационный файл для сборки ядра: | ||
Строка 138: | Строка 197: | ||
make menuconfig | make menuconfig | ||
</code> | </code> | ||
+ | |||
+ | Отключаем поддержку initramfs: | ||
+ | - ''General setup'' ---> ''Initial RAM filesystem and RAM disk (initramfs/initrd) support'' убираем. | ||
Выбираем поддержку framebuffer: | Выбираем поддержку framebuffer: | ||
Строка 147: | Строка 209: | ||
- ''System type'' ---> ''Allwinner SoCs'' ---> оставить только ''Allwinner sun8i Family SoCs support''. | - ''System type'' ---> ''Allwinner SoCs'' ---> оставить только ''Allwinner sun8i Family SoCs support''. | ||
- ''Device Drivers'' ---> ''Graphics support'' ---> убрать ''DRM Support for Allwinner A10 Display Engine''. | - ''Device Drivers'' ---> ''Graphics support'' ---> убрать ''DRM Support for Allwinner A10 Display Engine''. | ||
+ | |||
+ | Включаем поддержку USB-периферии в меню ''Device Drivers'' ---> ''USB support'': | ||
+ | <code> | ||
+ | [*] OTG support | ||
+ | <M> USB Modem (CDC ACM) support | ||
+ | <*> USB Mass Storage support | ||
+ | <*> USB Serial Converter support ---> | ||
+ | [*] USB Serial Console device support | ||
+ | [*] USB Generic Serial Driver | ||
+ | <M> USB Serial Simple Driver | ||
+ | <M> USB Belkin and Peracom Single Port Serial Driver | ||
+ | <M> USB Winchiphead CH341 Single Port Serial Driver | ||
+ | <M> USB CP210x family of UART Bridge Controllers | ||
+ | <M> USB FTDI Single Port Serial Driver | ||
+ | <M> USB Prolific 2303 Single Port Serial Driver | ||
+ | <M> USB driver for GSM and CDMA modems | ||
+ | </code> | ||
Далее для включения драйвера framebuffer в аргументах ядра (см. файл ''boot.cmd'') нужно будет указать ''console=tty1''. | Далее для включения драйвера framebuffer в аргументах ядра (см. файл ''boot.cmd'') нужно будет указать ''console=tty1''. | ||
Строка 171: | Строка 250: | ||
#Copying | #Copying | ||
cp -R linux/arch/arm/boot/zImage ArchARM/boot/ | cp -R linux/arch/arm/boot/zImage ArchARM/boot/ | ||
- | cp -R linux/arch/arm/boot/dts/* ArchARM/boot/dtbs/ | + | cp -R linux/arch/arm/boot/dts/sun8i-h3*.dtb ArchARM/boot/dtbs/ |
cp -R linux/output/lib/ ArchARM/usr/ | cp -R linux/output/lib/ ArchARM/usr/ | ||
cp -R linux/output/usr/ ArchARM/ | cp -R linux/output/usr/ ArchARM/ | ||
Строка 215: | Строка 294: | ||
<code> | <code> | ||
part uuid ${devtype} ${devnum}:${bootpart} uuid | part uuid ${devtype} ${devnum}:${bootpart} uuid | ||
- | setenv bootargs console=${console} console=tty1 disp.screen0_output_mode=vga root=PARTUUID=${uuid} rw rootwait | + | setenv bootargs console=${console} console=tty1 hdmi.audio=EDID:0 disp.screen0_output_mode=1280x1024p60 root=PARTUUID=${uuid} consoleblank=0 rw rootwait |
+ | |||
+ | setenv stdout serial,video | ||
+ | setenv stderr serial,video | ||
if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then | if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then | ||
Строка 226: | Строка 308: | ||
fi; | fi; | ||
fi | fi | ||
+ | |||
</code> | </code> | ||
Строка 322: | Строка 405: | ||
Thanks to tekdoc. | Thanks to tekdoc. | ||
+ | |||
+ | ===== Удаление неиспользуемых файлов ArchLinux ===== | ||
+ | |||
+ | Удаление ядра ArchLinux и прошивок. После удаления нужно заново скопировать на SD-карту ядро zImage и файлы /boot/dtbs/*. | ||
+ | <code bash> | ||
+ | pacman -R linux-armv7 linux-firmware mkinitcpio mkinitcpio-busybox | ||
+ | </code> | ||
+ | |||
+ | Удаление оставшихся файлов: | ||
+ | <code bash> | ||
+ | rm -R /usr/lib/firmware/ | ||
+ | </code> | ||
+ | |||
+ | Удаление ненужных локалей: | ||
+ | <code bash> | ||
+ | pacman -S localepurge | ||
+ | </code> | ||
+ | Закомментировать в /etc/locale.nopurge NEEDSCONFIGFIRST, затем: | ||
+ | <code bash> | ||
+ | localepurge | ||
+ | </code> | ||
+ | |||
+ | ====== Настройка параметров и работа с GPIO ====== | ||
+ | |||
+ | ===== Управление светодиодами ===== | ||
+ | |||
+ | Установить пакет ''sunxi-tools''. | ||
+ | |||
+ | Включение и выключение светодиода "Status" (от рута): | ||
+ | <code bash> | ||
+ | sunxi-pio -m PA15=1 | ||
+ | sunxi-pio -m PA15=0 | ||
+ | </code> | ||
+ | |||
+ | ===== Расположение выводов GPIO ===== | ||
+ | |||
+ | {{orangepi-h3_gpio_pinout.png}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||