1. Íà ñàéòå ðàñïáåðè â ðàçäåëå ñîôòà ïîñìîòðåë ïîñëåäíþþ ëàéò-âåðñèþ äëÿ raspberry B+.
2. Ñêà÷àë îáðàç ôëýøêè.
Êîä:
wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2023-05-03/2023-05-03-raspios-bullseye-armhf-lite.img.xz
3. Ðàçàðõèâèðîâàë.
Êîä:
unxz 2023-05-03-raspios-bullseye-armhf-lite.img.xz
4. Âñòàâèë ôëýøêó â íîóòáóê è ïîñìîòðåë êàêîå áëî÷íîå óñòðîéñòâî ïîÿâèëîñü â ñèñòåìå.
Êîä:
lsblk
..
/dev/sdb
..
5. Çàïèñàë ôàéë-îáðàç íà óñòðîéñòâî.
Êîä:
dd if=2023-05-03-raspios-bullseye-armhf-lite.img of=/dev/sdb bs=4M
6. Ìîæíî ïåðåñòàâëÿòü ôëýøêó â ðàñïáåðè è ïîäêëþ÷àòü ìîíèòîð ñ êëàâèàòóðîé, íî ìíå ëåíèâî âèñåòü íàä ìîíèòîðîì è ðàñïóòûâàòü ïûëüíûé êëóáîê ïðîâîäîâ. Ïýòîìó ïðîèçâåë áåçãîëîâûé (headless) çàïóñê.  íàøè äíè, êàê îêàçàëîñü, äëÿ ýòîãî òðåáóåòñÿ:
6.1 Ñîçäàòü íà ïåðâîì ôàòîâîì ðàçäåëå ôëýøêè ïóñòîé ôàéëèê ñ èìåíåì ssh, ÷òî â ïðîöåññå ïåðâîãî çàïóñêà áóäåò âîñïðèíÿòî ñèñòåìîé êàê ìîå æåëàíèå èìåòü ññø-ñåðâåð, ãîòîâûé ê ïîäêëþ÷åíèþ.
6.2 Ñîçäàòü òàì æå íà ïåðâîì ðàçäåëå ôàéëèê userconf, íî íå ïóñòîé à ñ ïàðîé ëîãèí:ïàðîëü. Ïðè÷åì ïàðîëü äîëæåí áûòü â âèäå õýøà.
Êîä:
echo -n "oleg:" > userconf
echo "123" |openssl passwd -6 -stdin >>userconf
cat userconf
oleg:$6$1mFLvr6jSSJQw8nC$dHkcajj7j6XqarnqLJU8XvgYk4yMld93Xeile/heOWORSljjVQBNAyLC7cOfDqx9/OT0akPXvadphBrJaNPh4/
Òî åñòü ëîãèí äëÿ âõîäà - oleg, à ïàðîëü - 123, êîòîðûé â áåçîïàñíîì âèäå âûãëÿäèò íåìíîãî ïî äðóãîìó. Çàêèäûâàåì ôàéë userconf ðÿäîì ñ ôàéëîì ssh, ÷òîáû ñèñòåìà èõ ïåðåíåñëà â êîíôèãóðàöèþ.
6.3 Ïîäãîòîâèòü áåñïðîâîäíîå ïîäêëþ÷åíèå.
Äîïóñòèì ó íàñ åñòü òî÷êà äîñóïà "ABC" è êëþ÷ ê íåé "12345678".
Êîä:
wpa_passphrase ABC 12345678 > wpa_supplicant.conf
ïîëó÷èëñÿ ôàéë wpa_supplicant.conf ñîäåðæàùèé
Êîä:
network={
ssid="ABC"
#psk="12345678"
psk=04cb2dce0184e4c2e48a7cefa77b592ae1590cf1f869a7c4bca5eda12841bab4
}
Òåïåðü åãî íóæíî äîïîëíèòü, äîáàâèâ íåñêîëüêî ñòðîê. Òàê âûãëÿäèò èçìåíåííûé ôàéë.
Êîä:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="ABC"
psk=04cb2dce0184e4c2e48a7cefa77b592ae1590cf1f869a7c4bca5eda12841bab4
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}
Ïîìåñòèì ôàéë wpa_supplicant.conf òóäà æå, íà ðàçäåë ôëýøêè ðÿäîì ñ ôàéëàìè userconf è ssh. Ñèñòåìà ïðè ïåðâîé çàãðóçêå ïåðåìåñòèò wpa_supplicant â íóæíóþ ïàïêó è íàñòðîèò íàì àâòîìàòè÷åñêèé çàïóñê âàéôàÿ.
7. Óñòàíàâëèâàåì ôëýøêó â ðàñïáåðè è ïîäàåì ïèòàíèå.
Íóæíî ïîäîæäàòü íåñêîëüêî ìèíóò, ïîêà ñèñòåìà ïðîèçâåäåò âñå ïåðâîíà÷àëüíûå íàñòðîéêè, ïîäïðàâèò ðàçäåëû ôëýøêè, íàñòðîèò è çàïóñòèò ssh-ñåðâåð, ïîäêëþ÷èòñÿ ê âàéôàé ñ óêàçàíûìè â ôàéëå wpa_supplicant íàñòðîéêàìè è ñîçäàñò â ñèñòåìå ïîëüçîâàòåëÿ ñ ó÷åòíûìè äàííûìè, óêàçàííûìè â ôàéëå userconf. Ïîñëå ïðîäåëàííûõ îïåðàöèé ðàñïáåðè âðîäå áû ïåðåçàïóñêàåòñÿ. Âîáùåì, æäåì ìèíóò ïÿòü. Ïî äèñïëåþ âåñü ïðîöåññ ìîæíî áûëî áû íàáëþäàòü, íî ó ìåíÿ ïåðåä ãëàçàìè ëèøü ìèãàþùèé ñâåòîäèîä ðàñïáåðè.
8. Åñëè çàïóñêàåì áåç ìîíèòîðà, òî äóìàåì, êàê æå ìû óçíàåì àéïè-àäðåñ ðàñïáåðè. ß ïîñìîòðåë ïî âàéôàé-ìàðøðóòèçàòîðó êàêîé àäðåñ îí âûäàë ðàñïáåðè.  àíäðîèä-ñìàðòôîíå, ïðè ðàçäà÷å, òîæå ìîæíî ïîñìîòðåòü êàêèå ê íåìó óñòðîéñòâà ïîäêëþ÷åíû è êàêèå àäðåñà èì âûäàíû.  ëþáîì ñëó÷àå, êàê çàïàñíîé âàðèàíò åñòü ìîíèòîð, íà êîòîðûé ðàñïáåðè ïîñëå çàãðóçêè ïå÷àòàåò, êàêîé îíà ïîëó÷èëà àäðåñ.
9. Ïûòàåìñÿ çàéòè íà ðàñïáåðè. Èç ëèíóêñà íàáèðàåì êîìàíäó ssh, èç âèíäîñà - óñòàíàâëèâàåì ïðîãðàììó putty è ñ å¸ ïîìîùüþ ïðîáóåì ïîäêëþ÷èòüñÿ.
(ÿ â ôàéëèêå õîñòîâ óæå ïðîïèñàë äëÿ àäðåñà ðàñïáåðè òðè èìåíè, îäíî èç êîòîðûõ rpi, ÷òîáû íå çàïîìèíàòü àéïè)
10. Ïîäêëþ÷èëèñü. Ïðîâåðÿåì è óñòàíàâëèâàåì îáíîâëåíèÿ.
Êîä:
sudo apt-get update
sudo apt-get upgrade
11. Óñòàíàâëèâàåì ìèíèìàëüíûé íàáîð óòèëèò äëÿ stm32.
Êîä:
sudo apt-get install gcc-arm-none-eabi
sudo apt-get install stlink-tools
Äëÿ ìèãàíèÿ ñâåòîäèîäîì óæå äîñòàòî÷íî.
12. Ñîçäàåì ïàïêó äëÿ ïåðâîãî ïðîåêòà.
Êîä:
mkdir -p stm32/projects/
Ïîìåùàåì â íåå àðõèâ ñ êîäîì blink.zip è ðàñïàêîâûâàåì.
Ïåðåõîäèì â ïàïêó blink
Ñîáèðàåì.
Êîä:
oleg@raspberrypi:~/stm32/projects/blink $ make clean all
rm -f main.o
rm -f main.elf
rm -f main.bin
/usr/bin/arm-none-eabi-gcc -x assembler-with-cpp -c -specs=nosys.specs -g -O0 -mcpu=cortex-m3 -mthumb -Wall -Wextra -fmessage-length=0 -no-pie -march=armv7-m -masm-syntax-unified -fno-exceptions -fno-unwind-tables -mlittle-endian -fno-rtti main.S -o main.o
/usr/bin/arm-none-eabi-gcc main.o -mcpu=cortex-m3 -march=armv7-m -mlittle-endian -masm-syntax-unified -fno-rtti -fno-exceptions -fno-unwind-tables -mthumb -Wall -specs=nosys.specs -nostdlib -nostartfiles -lgcc -Tlinker.ld -no-pie -o main.elf
/usr/bin/arm-none-eabi-objcopy -S -O binary main.elf main.bin
/usr/bin/arm-none-eabi-size main.elf
text data bss dec hex filename
100 0 0 100 64 main.elf
Ïðîøèâàåì (åñëè st-link ïîäêëþ÷åí ê ðàñïáåðè, è bluepill ïîäêëþ÷åíà ê st-link)
Êîä:
oleg@raspberrypi:~/stm32/projects/blink $ make flash
st-flash --reset write main.bin 0x8000000
st-flash 1.6.1
2023-05-24T11:39:20 INFO common.c: F1 Low-density device: 10 KiB SRAM, 32 KiB flash in at least 1 KiB pages.
file main.bin md5 checksum: 29f8d7ab1e97c3ec500c6bb2df75b, stlink checksum: 0x00001f76
2023-05-24T11:39:20 INFO common.c: Attempting to write 100 (0x64) bytes to stm32 address: 134217728 (0x8000000)
2023-05-24T11:39:20 INFO common.c: Flash page at addr: 0x08000000 erased
2023-05-24T11:39:20 INFO common.c: Finished erasing 1 pages of 1024 (0x400) bytes
2023-05-24T11:39:20 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id
2023-05-24T11:39:20 INFO flash_loader.c: Successfully loaded flash loader in sram
1/1 pages written
2023-05-24T11:39:20 INFO common.c: Starting verification of write complete
2023-05-24T11:39:20 INFO common.c: Flash written and verified! jolly good!
Äëÿ áîëåå ñåðüåçíîé ðàáîòû ïðèäåòñÿ ñêà÷àòü è óñòàíîâèòü äîïîëíèòåëüíûå ïàêåòû. Êàêèå èìåííî - çàâèñèò îò òîãî, ÷òî èñïîëüçóþò ðàçðàáîò÷èêè èíòåðåñóþùèõ âàñ ïðîåêòîâ. Äëÿ íà÷àëà ñêà÷àë â ïàïêó stm32 òàêîé íàáîð.
Êîä:
CMSIS_5
STM32Cube_FW_F1_V1.7.0
STM32Cube_FW_H7_V1.7.0
STM32F10x_StdPeriph_Lib_V3.5.0
CMSIS_5, â ÷àñòîíîñòè, íóæåí ÷òîáû ñîáðàòü êîä äëÿ Àèñò-2, à òî ñêàæåòå, äåñêàòü, - "Áëèíüê ìû è ñàìè íà àðäóèíêå ñûãðàåì, òû ÌÓðêó äàâàé."
Ìóðêà:
Êîä:
oleg@raspberrypi:~/stm32/projects/aist/build/stm32h743zi $ make clean all
rm -fR ./obj
rm -f tc1_stm32h743zi_rom.elf tc1_stm32h743zi_rom.map tc1_stm32h743zi_rom.hex tc1_stm32h743zi_rom.bin
rm -f tc1_stm32h743zi_ram.elf tc1_stm32h743zi_ram.map tc1_stm32h743zi_ram.hex tc1_stm32h743zi_ram.bin
arm-none-eabi-gcc --version
arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
arm-none-eabi-gcc -std=gnu11 -Wstrict-prototypes -c -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -gdwarf-2 -fomit-frame-pointer -Wall -DARM_MATH_CM7 -DNDEBUG=1 -DCPUSTYLE_STM32H7XX=1 -DSTM32H743xx=1 -MD -MP -MF ./obj/audio.o.d -ffunction-sections -fdata-sections -I../../../../CMSIS_5/CMSIS/Core/Include -I../../../../CMSIS_5/CMSIS/DSP/Include -I../../../../CMSIS_5/CMSIS/DSP/Source -I../../../../CMSIS_5/CMSIS/DSP/PrivateInclude -I../.. -I../../inc ../../src/audio.c -o obj/audio.o
..
arm-none-eabi-gcc ./obj/audio.o ./obj/bandfilters.o ./obj/board.o ./obj/buffers.o ./obj/cmsis_dsp_forward.o ./obj/display2.o ./obj/elkey.o ./obj/encoder.o ./obj/filters.o ./obj/formats.o ./obj/gpio.o ./obj/hardware.o ./obj/irq_ctrl_gic_forward.o ./obj/keyboard.o ./obj/keymaps.o ./obj/main.o ./obj/modems.o ./obj/nvram.o ./obj/sai.o ./obj/sdcard.o ./obj/sdram.o ./obj/sequen.o ./obj/serial.o ./obj/spi.o ./obj/spislave.o ./obj/synthcalcs.o ./obj/tests.o ./obj/twi.o ./obj/wavfile.o ./obj/codecs/cs4272.o ./obj/codecs/nau8822.o ./obj/codecs/tlv320aic23.o ./obj/codecs/wm8994.o ./obj/display/display.o ./obj/display/dummy.o ./obj/display/framebuf.o ./obj/display/hd44780.o ./obj/display/ili8961.o ./obj/display/ili9225.o ./obj/display/ili9320.o ./obj/display/l2f50.o ./obj/display/lph88.o ./obj/display/ls020.o ./obj/display/ltdc.o ./obj/display/pcf8535.o ./obj/display/s1d13781.o ./obj/display/st7565s.o ./obj/display/st7735.o ./obj/display/uc1601s.o ./obj/display/uc1608.o ./obj/fatfs/diskio.o ./obj/fatfs/ff.o ./obj/fatfs/ffsystem.o ./obj/fatfs/ffunicode.o ./obj/gui/gui_framework.o ./obj/gui/gui_user.o ./obj/speex/fftwrap.o ./obj/speex/filterbank.o ./obj/speex/kiss_fft.o ./obj/speex/kiss_fftr.o ./obj/speex/mdf.o ./obj/speex/preprocess.o ./obj/speex/smallft.o ./obj/touch/gt911.o ./obj/touch/stmpe811.o ./obj/touch/touch.o ./obj/usb/usb_core.o ./obj/usb/usbd_cdc.o ./obj/usb/usbd_descriptors.o ./obj/usb/usbd_dfu.o ./obj/usb/usbd_uac.o ./obj/usb/usbh_dskio.o ./obj/usb/MSC/Src/usbh_msc.o ./obj/usb/MSC/Src/usbh_msc_bot.o ./obj/usb/MSC/Src/usbh_msc_scsi.o ./obj/test2.o ./obj/usb/USBPhy_RZ_A1.o -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -nostartfiles -T./STM32H743ZI_rom.ld -Wl,-Map=tc1_stm32h743zi_rom.map,--cref -Wl,--gc-sections -lm -o tc1_stm32h743zi_rom.elf
arm-none-eabi-size --format=sysv --radix=16 tc1_stm32h743zi_rom.elf
tc1_stm32h743zi_rom.elf :
section size addr
.text 0x9f589 0x8000000
.ARM.exidx 0x8 0x809f58c
.copy.table 0x24 0x809f594
.zero.table 0x8 0x809f5b8
.data 0x10b90 0x20000000
.itcm 0x2c28 0x0
.ram_d1 0xa080 0x24000000
.bss 0x442e0 0x30000000
.noinit 0x657c0 0x2400a080
.debug_info 0x124e8b 0x0
.debug_abbrev 0xede0 0x0
.debug_loc 0x17d88a 0x0
.debug_aranges 0x36d0 0x0
.debug_ranges 0x42930 0x0
.debug_line 0xeea16 0x0
.debug_str 0x19d75 0x0
.comment 0x9f 0x0
.ARM.attributes 0x30 0x0
.debug_frame 0xcda4 0x0
Total 0x573388
arm-none-eabi-objcopy -g -O ihex -R .noinit -R .bss -R .heap tc1_stm32h743zi_rom.elf tc1_stm32h743zi_rom.hex
Äàæå íå îæèäàë, ÷òî âîò òàê âîò âîçüì¸ò è ñîáåðåòñÿ. Äóìàë äëÿ íà÷àëà îãðàíè÷èòüñÿ áëèíüêîì. (=