Ñòðàíèöà 1 èç 42 123411 ... ÏîñëåäíÿÿÏîñëåäíÿÿ
Ïîêàçàíî ñ 1 ïî 10 èç 417

Òåìà: Ïðîãðàììèðîâàíèå STM32

  1. #1

    Ðåãèñòðàöèÿ
    14.06.2018
    Àäðåñ
    Ñàíêò-Ïåòåðáóðã
    Ñîîáùåíèé
    1,622

    Ïðîãðàììèðîâàíèå STM32

    Ïðèâåò, íàðîä. Äàâàéòå ñ âîïðîñàìè ïðîãðàììèðîâàíèÿ stm32 çäåñü ðàñïîëîæèìñÿ.
    À òî ïðî êîíñòðóêöèè íà stm32 òåìû èìåþòñÿ, à ïðî ïðîãðàììèðîâàíèå - íåò. Îäíè è òå æå âîïðîñû ïîäíèìàþòñÿ â ðàçíûõ òåìàõ.

    Äëÿ çàòðàâêè. (-:
     ïîñëåäíåå âðåìÿ øòóäèðîâàë stm32. Íàðàáîòàííûå ñ avr ìåòîäèêè ïðèãîäèëèñü äàæå áîëüøå, ÷åì îæèäàë. Ñ àññåìáëåðîì ðàçíèöû îñîáîé íåò. Èíñòðóêöèè, íó äà, îòëè÷àþòñÿ, íå êàðäèíàëüíî. Êàê avr ïðîãðàììèðîâàë ïîä gas (gnu assembly), òàê è stm32 ïðîäîëæèë.

    Ïðåäñòàâëÿþ ïðîñòóþ ëàáó - "ÁàðýìÅòàë áëèíüê".
    Êòî íå çíàåò - "baremetal", ýòî çíà÷èò "÷èñòî æåëåçÿ÷íûé". Ïîäõîä ê çàäà÷å áåç èçëèøåñòâ. Äàæå áåç îñîáîãî ìíåíèÿ íà ÷¸ì ïðàâèëüíî ïðîãðàììèðîâàòü âìåñòî àññåìáëåðà.

    Voila! Ïîåõàëè!

    Êîä:
    oleg@tower ~/ $ tree
    .
    ├── Makefile
    ├── linker.ld
    └── main.S
    
    0 directories, 3 files
    Êîä:
    oleg@tower ~/ $ cat Makefile
    TARGET     =    main
    LD_SCRIPT =    linker.ld
    TOOLCHAIN = /usr
    CC = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
    AS = $(TOOLCHAIN)/bin/arm-none-eabi-as
    LD = $(TOOLCHAIN)/bin/arm-none-eabi-ld
    OC = $(TOOLCHAIN)/bin/arm-none-eabi-objcopy
    OD = $(TOOLCHAIN)/bin/arm-none-eabi-objdump
    OS = $(TOOLCHAIN)/bin/arm-none-eabi-size
    ASFLAGS += -c
    ASFLAGS += -specs=nosys.specs
    ASFLAGS += -g
    ASFLAGS += -O0
    ASFLAGS += -mcpu=cortex-m3
    ASFLAGS += -mthumb
    ASFLAGS += -Wall
    ASFLAGS += -Wextra
    ASFLAGS += -fmessage-length=0
    ASFLAGS += -no-pie
    ASFLAGS += -march=armv7-m
    ASFLAGS += -masm-syntax-unified
    ASFLAGS += -fno-exceptions
    ASFLAGS += -fno-unwind-tables
    ASFLAGS += -mlittle-endian
    ASFLAGS += -fno-rtti
    LFLAGS += -mcpu=cortex-m3
    LFLAGS += -march=armv7-m
    LFLAGS += -mlittle-endian
    LFLAGS += -masm-syntax-unified
    LFLAGS += -fno-rtti
    LFLAGS += -fno-exceptions
    LFLAGS += -fno-unwind-tables
    LFLAGS += -mthumb
    LFLAGS += -Wall
    LFLAGS += -specs=nosys.specs
    LFLAGS += -nostdlib
    LFLAGS += -nostartfiles
    LFLAGS += -lgcc
    LFLAGS += -T$(LD_SCRIPT)
    LFLAGS += -no-pie
    AS_SRC   =  main.S
    INCLUDE  =  -I./
    OBJS  = $(AS_SRC:.S=.o)
    
    .PHONY: all
    all: $(TARGET).bin
    
    %.o: %.S
        $(CC) -x assembler-with-cpp $(ASFLAGS) $< -o $@
    
    $(TARGET).elf: $(OBJS)
        $(CC) $^ $(LFLAGS) -o $@
    
    $(TARGET).bin: $(TARGET).elf
        $(OC) -S -O binary $< $@
        $(OS) $<
    
    .PHONY: clean
    clean:
        rm -f $(OBJS)
        rm -f $(TARGET).elf
        rm -f $(TARGET).bin
    
    flash: all
        st-flash --reset write $(TARGET).bin 0x8000000
    Êîä:
    oleg@tower ~/ $ cat linker.ld 
    ENTRY(main)
    _estack = 0x20005000;
    MEMORY
    {
        FLASH ( rx )      : ORIGIN = 0x08000000, LENGTH = 64K
        RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 20K
    }
    SECTIONS
    {
      .text :
      {
        . = ALIGN(4);
        *(.text)
        *(.text*)
        . = ALIGN(4);
      } >FLASH
    }
    Êîä:
    oleg@tower ~/ $ cat main.S 
    .syntax unified
    .cpu cortex-m3        @ stm32f103c6t6
    .global main        @
    .section .text        @ only section
    boot:            @ word
    .word _estack        @ see linker script
    .word main        @ reset address
    .thumb_func        @ aka +1 offset to reset
    main:            @ thumb code
    ldr r0, =(1<<4)        @ mask GPIOC clock enable
    ldr r2, =0x40021000    @ bus clock reg
    ldr r1, =0x18        @ gpioc clock reg offset
    ldr r3, [r2, r1]    @ read clock reg
    orr r0, r0, r3        @ set clock enable
    str r0, [r2, r1]    @ update clock reg
    ldr r0, [r2, r1]        @ just delay a bit
    ldr r0, [r2, r1]    @ just delay a bit
    ldr r0, =(1<<21)    @ mask C13 output push-pull at 2MHz
    ldr r2, =0x40011000    @ (GPIO offset)
    ldr r1, =0x04        @ (GPIOC_CRH offset)
    ldr r3, [r2, r1]    @ read
    orr r0, r0, r3        @ modify
    str r0, [r2, r1]    @ write
    loop:
    ldr r0, =(1<<13)    @ mask C13 high
    ldr r2, =0x40011000    @ (GPIO offset)
    ldr r1, =0x10        @ (GPIOC_BSRR offset)
    str r0, [r2, r1]    @ write
    bl delay
    ldr r0, =(1<<29)         @ mask C13 low
    ldr r2, =0x40011000     @ (GPIO offset)
    ldr r1, =0x10           @ (GPIOC_BSRR offset)
    str r0, [r2, r1]        @ write
    bl delay
    b loop            @ infinite loop
    delay:
    ldr r4, =0x100000
    again:
    subs r4, r4, 1
    bne again
    bx lr
    .end
    Êîä:
    oleg@tower ~/ $ 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
    Êîä:
    oleg@tower ~/ $ make flash
    st-flash --reset write main.bin 0x8000000
    st-flash 1.7.0
    2023-04-14T20:38:44 INFO common.c: F1xx High-density: 64 KiB SRAM, 256 KiB flash in at least 2 KiB pages.
    file main.bin md5 checksum: 78946d427b4d276feeea02bb3ff59e0, stlink checksum: 0x00001f46
    2023-04-14T20:38:44 INFO common.c: Attempting to write 100 (0x64) bytes to stm32 address: 134217728 (0x8000000)
    2023-04-14T20:38:44 INFO common.c: Flash page at addr: 0x08000000 erased
    2023-04-14T20:38:44 INFO common.c: Finished erasing 1 pages of 2048 (0x800) bytes
    2023-04-14T20:38:44 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL
    2023-04-14T20:38:44 INFO flash_loader.c: Successfully loaded flash loader in sram
    2023-04-14T20:38:44 INFO flash_loader.c: Clear DFSR
      1/  1 pages written
    2023-04-14T20:38:44 INFO common.c: Starting verification of write complete
    2023-04-14T20:38:44 INFO common.c: Flash written and verified! jolly good!
    2023-04-14T20:38:44 WARN common.c: NRST is not connected
    Ìèãàåò.

    Íàæìèòå íà èçîáðàæåíèå äëÿ óâåëè÷åíèÿ. 

Íàçâàíèå:	cortexm3lab.JPG 
Ïðîñìîòðîâ:	261 
Ðàçìåð:	37.0 Êá 
ID:	387831

    Ðåçþìå òî æå, ÷òî è äëÿ ìèêðî÷èïîâ:
    Êòî ñ÷èòàåò, ÷òî cortex-m ýòî âûíîñ ìîçãà, à äëÿ "âõîæäåíèÿ" íóæíî ÷òî-òî áîëüøåå, ÷åì ñòàðûé ëèíóêñîâûé íîóò èëè ðàñïáåðè, ñòîðóáëåâûé ïðîãðàììàòîð è áëþ-ïèë ñ êèòàéñêèì êëîíîì, òîãî âûíóæäåí ðàçî÷àðîâàòü. Áûëî áû æåëàíèå. Èç äîêóìåíòàöèè - äàòàøèò íà ìê, ðåôåðåíñ íà ìê, ðóêîâîäñòâî ïî ïðîãðàììèðîâàíèþ íà ìê. Âñå îò ðàçðàáîò÷èêà. Èç ñîôòà, êàê îáû÷íî - make, gcc, gdb, stlink, vim.

    P.S. ×óòü íå çàáûë. Îáÿçàòåëüíî íóæåí êóñî÷åê ñèíåé èçîëåíòû. Àêêóðàò ìåæäó áëþ-ïèëîì è ïðîãðàììàòîðîì. Ó ïðîãðàììàòîðà àëþìèíèåâûé êîðïóñ. Êðàñêà ïîñòåïåííî ïðîøêðÿáàåòñÿ è ìîæåò êîðîòíóòü. Óäà÷è.
    Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü ozforester; 15.04.2023 â 00:17.

  2. Ñïàñèáî îò 4Y


  3. #2

    Ðåãèñòðàöèÿ
    28.07.2012
    Àäðåñ
    Yelets
    Ñîîáùåíèé
    621
    Ïîçûâíîé
    R2GKH
    Öèòàòà Ñîîáùåíèå îò ozforester Ïîñìîòðåòü ñîîáùåíèå
    Voila! Ïîåõàëè!
    Ìîæåò, âñå-òàêè ñòîèò íà÷àòü ñ áîëëå ïðîçàè÷íûõ âåùåé?
    Ñðåäû ïðîãðàììèðîâàíèÿ, èõ óñòàíîâêà è íàñòðîéêà. Áèáëèîòåêè, ãäå áðàòü?

    Àññåìáëåð äëÿ ìèêðîêîíòðîëëåðîâ ñåé÷àñ - ýòî î÷åíü âûñîêèé "ïîðîã âõîæäåíèÿ".
    Íåäàðîì îáîëî÷êà CubeMX ïîëüçóåòñÿ óñïåõîì. Õîòÿ è "Ñ" äëÿ ìèêðîêîíòðîëëåðîâ - íå ëó÷øèé ÿçûê.

  4. #3
    Àâàòàð äëÿ vadim_d
    Ðåãèñòðàöèÿ
    29.10.2006
    Àäðåñ
    Ñàíêò-Ïåòåðáóðã
    Ñîîáùåíèé
    16,207
    Öèòàòà Ñîîáùåíèå îò Vital R2GKH Ïîñìîòðåòü ñîîáùåíèå
    ñ áîëëå ïðîçàè÷íûõ âåùåé?
    "- Âû íå ñêàæåòå, êàê ïðîéòè â áèáëèîòåêó?
    - Êàêàÿ áèáëèîòåêà â òðè ÷àñà íî÷è?"

    Ïî ìåðå óñëîæíåíèÿ àðõèòåêòóðû êîíòðîëëåðîâ è ñîâåðøåíñòâîâàíèÿ ñðåäû ðàçðàáîòêè ïðîöåíò àññåìáëåðà íåóêëîííî ñïàäàåò. Âî âðåìåíà 8080 è Z80, êîãäà íà÷èíàë çàíèìàòüñÿ ïðîãðàììèðîâàíèåì âñòðàèâàåìûõ ñèñòåì, ñïðàøèâàë íàðîä, êàê ìîæíî ïîëó÷èòü ñ êîìïèëÿòîðà Ñ êîä, èñïîëíÿåìûé èç ÏÇÓ, è íèêòî íå ìîã ìíå îòâåòèòü. Òå, êòî ìîã ïîçâîëèòü ñåáå õîðîøèé îáúåì ÎÇÓ, ãåíåðèðîâàëè èñïîëíÿåìûé ôàéë äëÿ CP/M-80 è ãðóçèëè åãî òóäà. Ìíå ïðèøëîñü îñíîâàòåëüíî ïåðåòðÿõíóòü òó âåðñèþ Aztec C https://en.wikipedia.org/wiki/Aztec_C , ÷òî áûëà â íàëè÷èè, ÷òîáû íàéòè ìåòêè, ñîîòâåòñòâóþùèå ñåãìåíòó äàííûõ ïðè ãåíåðàöèè àññåìáëåðíûõ ôàéëîâ ïîä ìàéêðîñîôòîâñêèé Ì80, ïîñëå ÷åãî íàïèñàòü êóñîê ñòàðòàïíîãî êîäà è óòèëèòó, êîòîðàÿ ñîáèðàåò â îäèí õåêñ ôàéë ñåãìåíòû êîäà è äàííûõ. È òîãäà íàñòàëî ñ÷àñòüå, âñÿêèé ïîëüçîâàòåëüñêèé èíòåðôåéñ ïðîãðàìì óïðàâëåíèÿ òèðèñòîðíûìè èíâåðòîðàìè íà Ñ ñòàë ïðîñòûì è ÷èòàåìûì. Ñåé÷àñ îá ýòîì äóìàòü íå íàäî, âñå åñòü â ñðåäå ðàçðàáîòêè, íóæíî òîëüêî óìåëî åé ïîëüçîâàòüñÿ. È èìåííî ïîýòîìó âûïèñûâàòü íà àññåìáëåðå ñåãìåíòû êîäà è äàííûõ âðÿä ëè åñòü ñìûñë, íî íóæíî óìåòü îòâåòèòü íà âîïðîñ (â Ëþêñîôòå íà èíòåðâüþ òàêîé èíîãäà çàäàâàë), à ÷òî ïðîèñõîäèò â ìèêðîêîíòðîëëåðå äî çàïóñêà ôóíêöèè main()?  gcc ïîæàëóé ñàìîå óäîáíîå ïðèìåíåíèå àññåìáëåðà â âèäå àññåìáëåðíûõ âñòàâîê â ñèøíûé êîä, êîãäà êîìïèëÿòîðó ãîâîðÿò, ÷òî ýòîò êóñîê áåðåò íà âõîä, ÷òî äàåò íà âûõîäå è êàêèå ðåãèñòðû ìîäèôèöèðóåò â õîäå ñâîåé ðàáîòû, à óæ êîìïèëÿòîð âñå ýòî ïðèíèìàåò ê ñâåäåíèþ. Ïðîöåíò àññåìáëåðà äàæå â ãîòîâûõ ðèàëòàéìîâûõ ñèñòåìàõ ïîä SPM32 î÷åíü ìàë
    Âàäèì

  5. #4
    Ðàçî÷àðîâàë ìåíÿ STM32, ÷åñòíî ãîâîðÿ. È, ïðåæäå âñåãî öåíàìè. ß ïîíèìàþ, ìàðêåòèíãîâàÿ ïîëèòèêà, íàäî ïðèâëå÷ü ïóáëèêó. Ïîòîì ìîæíî öåíû è ïîäíÿòü. Íî íå òàê æå - â 5-10 ðàç! Ãîäà òðè íàçàä êóïèë íåñêîëüêî STM32F103C8T6 è STM32F4P6, íó ïîíÿòíî ST-Link.  òî âðåìÿ STM32F103C8T6 ñòîèë ïîðÿäêà 3 äîëëàðîâ. Ñèíÿÿ ïëàòà îò êèòàéöåâ íå äîðîæå, ïî÷òè ñòîëüêî æå ñêîëüêî è ìèêðîñõåìà. È âîò ñåé÷àñ. Êîíå÷íî ìîæíî ïîèñêàòü è íàéòè ïîäåøåâëå.. Íî îáùàÿ òåíäåíöèÿ íàëèöî. Ìîæíî ïðèìåíèòü äðóãèå êîíòðîëëåðû (òóò ìíå îáúÿñíÿþò, ÷òî òå ÷òî ÿ óïîìÿíóë óæå äðåâíèå, ïîòîìó òàê äîðîãî. Íî Atmega328 òîæå ñóùåñòâóåò äàâíî, íî öåíà íå ïðàêòè÷åñêè íå èçìåíèëàñü). Íî íàäî áûëî ïèñàòü ñ ïðèìåíåíèåì Hal, òîãäà ïðåæíèå íàðàáîòêè ìîæíî áûëî áû áåçáîëåçíåííî ïåðåíåñòè. à åæåëè ñ ïðÿìûì äîñòóïîì ê ðåãèñòðàì, òîãäà âñå ïî íîâîé.
    Êîðî÷å, ìîå ìíåíèå òàêîå - åñëè âàì íóæåí êàêîé-ëèáî òðàíñèâåð èëè ÷òî äðóãîå, òî Atmega328, íàïðèìåð, óäîâëåòâîðèò âñå âàøè òðåáîâàíèÿ â áîëüøèíñòâå ñëó÷àåâ. À åñëè ïðîãðàììèðîâàíèå ðàäè ïðîãðàììèðîâàíèÿ, òîãäà äà. Äà è âðîäå ñïåöèàëèñòû ïðîãðàììåðû õîðîøî îñâîèâøèå STM32, ñåé÷àñ âðîäå âîñòðåáîâàíû. Òàê ÷òî ìîëîäåæè, æåëàâøèå ïîëó÷èòü õîðîøóþ ðàáîòó, íàäî çàäóìàòüñÿ. Íî îïÿòü æå, íåèçâåñòíî ÷òî áóäåò çàâòðà. Ìîæåò êàêîé-íèòü ESP.
    Ìèíèàòþðû Ìèíèàòþðû Íàæìèòå íà èçîáðàæåíèå äëÿ óâåëè÷åíèÿ. 

Íàçâàíèå:	STM32.png 
Ïðîñìîòðîâ:	200 
Ðàçìåð:	772.4 Êá 
ID:	387839  
    Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü Âëàäèìèð_Ê; 15.04.2023 â 11:59.

  6. #5

    Ðåãèñòðàöèÿ
    14.06.2018
    Àäðåñ
    Ñàíêò-Ïåòåðáóðã
    Ñîîáùåíèé
    1,622
    vadim_d
    Íà÷íó ñ òîãî, ÷òî âñå ñêàçàííîå âûøå ýòî ñóãóáî âçãëÿä ðàäèîëþáèòåëÿ íà âîçìîæíîñòè ðàäèîëþáèòåëÿ. ×åì áîëüøå ñóùíîñòåé, òåì êðó÷å çàâàðèâàåòñÿ êàøà â ãîëîâå. Íà÷èíàòü ëó÷øå ñ ïðîñòîãî. Àññåìáëåð ýòî ïðîñòî. Êîìàíä íà ïîðÿäîê ìåíüøå. Êàæäàÿ êîìàíäà íàõîäèò ñâîå ìåñòî â êîíå÷íîì êîäå ïðîøèâêè, èáî ýòî ïî÷òè âñåãäà èíñòðóêöèÿ ïðîöåññîðà. ×òî-òî íå òàê, áåðåøü è ÷èòàåøü ïåðâîèñòî÷íèê, íàïèñàííûé òåì æå ÿçûêîì. ß ðàíüøå ïåðåñåêàëñÿ ñ ïðîôåññèîíàëàìè è âîáùåì-òî íè÷åìó ó íèõ íå íàó÷èëñÿ, áûëî ñâîèõ çàäà÷ ïî ãîðëî. Ñàìûì âàæíûì, ÷òî âûíåñ èç âîçìîæíîñòè îáùàòüñÿ ñ ãóðó, áûëî ïîíèìàíèå òîãî, êàê ÿ äàëåê îò íàñòîÿùåãî ïðîãðàììèñòà.
    Äàëåå ïðîäîëæó. Âû âåäü íå ñòàíåòå îòðèöàòü, ÷òî â îñíîâå òàêè ëåæèò ïîíèìàíèå.  äàííîì ñëó÷àå ïîíèìàíèå óñòðîéñòâà è ðàáîòû ñàìîãî ìê - à ýòî äîêóìåíòàöèÿ ðàçðàáîò÷èêà ìê, è óòèëèò - äîêóìåíòàöèÿ ðàçðàáîò÷êîâ ñîôòà. Ïëþñ ïðàêòè÷åñêàÿ ïðîâåðêà ïîëó÷åííûõ çíàíèé. Âîò, ê ïðèìåðó, áîëüøèíñòâî ïðîòîêîëîâ ýòî "äðûãàíüå íîãàìè ìèêðîêîíòðîëëåðà". Áåçîíîñèòåëüíî ê êîëè÷åñòâó ïðîâîäîâ â èíòåðôåéñå è àïïàðàòîíî èëè ïðîãðàììíî çàäà÷à ðåøàåòñÿ. Êîãäà ÷èòàë, áûë óâåðåí íà âñå ñòî, ÷òî ýòî ïðîñòî. Íà÷àë äåëàòü ëàáû è íàáèë ñåáå äåñÿòêè åñëè íå ñîòíè øèøåê. È äàòàøèò íå ðàç ïåðå÷èòâàë, è gcc, è èçâîðà÷èâàëñÿ êàê óæ íà ñêîâîðîäêå ÷òîáû áåç ïðèáîðîâ è äîñòàòî÷íîãî îïûòà ëîêàëèçîâàòü ïðîáëåìó. Ýòî ïðîñòî êàê ïðèìåð. Äàæå ÷òîáû çàäàòü âîïðîñ ïðîôåññèîíàëó, òîæå íóæíû çíàíèÿ. À ïîòîì ñëûøèøü, - "Ý, áàòåíüêà, äà âû ïðîãðàììèñò." - Âîâñå íåò, ïðîñòî ïðèõîäèòñÿ ïðèñïîñàáëèâàòüñÿ, ÷òîáû ïîëó÷èòü îáðàòíóþ ñâÿçü. Ê ñîæàëåíèþ òåìà áåñêîíå÷íàÿ. Âûëîæó-êà ëó÷øå ëèñòèíã ïðîãðàììû. Êàê-òî çàáûë â÷åðà. È, åùå ðàç, ðåçþìèðóþ - ÄÀòàøèòû è àññåìáëåð áëàãîòâîðíî âëèÿþò íà íåîêðåïøèé ìîçã íà÷èíàþùåãî ïðîãðàììèðîâàòü. Êîãäà çíàíèÿ (èëè çàáëóæäåíèÿ) "çàöåìåíòèðóþòñÿ ", èñïðàâëÿòü èõ áóäåò ïîçäíî.

     ëèñòèíãå âèäíî, ÷òî íåñìîòðÿ íà îòêëþ÷åííóþ îïòèìèçàöèþ, êîìïèëÿòîð âñå òàêè íåìíîãî èçìåíèë ïåðâîíà÷àëüíóþ ïðîãðàììó. Çäåñü ýòî ñâÿçàíî ñ èñïîëüçîâàíèåì ðàñøèðåíèÿ gas. Îí äà¸ò âîçìîæíîñòü çàãðóæàòü â ðåãèñòð ÷èñëî íåïîñðåäñòâåííî (immediate), à ñàì âòèõóøêó ðàçìåùàåò ÷èñëî â êîäîâîì ñåãìåíòå è ññûëàåòñÿ íà íåãî ÷åðåç ðåãèñòð (indirect) Ìîæíî áûëî èçíà÷àëüíî íå èñïîëüçîâàòü ðàñøèðåíèå, íî òîãäà è îáúÿñíåíèÿ íå ïîñëåäîâàëî áû.

    Êîä:
    main.elf:     file format elf32-littlearm
    
    
    Disassembly of section .text:
    
    
    08000000 <boot>:
     8000000:    20005000     .word    0x20005000
     8000004:    08000009     .word    0x08000009
    
    
    08000008 <main>:
     8000008:    f04f 0010     mov.w    r0, #16
     800000c:    4a13          ldr    r2, [pc, #76]    @ (800005c <again+0x6>)
     800000e:    f04f 0118     mov.w    r1, #24
     8000012:    5853          ldr    r3, [r2, r1]
     8000014:    ea40 0003     orr.w    r0, r0, r3
     8000018:    5050          str    r0, [r2, r1]
     800001a:    5850          ldr    r0, [r2, r1]
     800001c:    5850          ldr    r0, [r2, r1]
     800001e:    f44f 1000     mov.w    r0, #2097152    @ 0x200000
     8000022:    4a0f          ldr    r2, [pc, #60]    @ (8000060 <again+0xa>)
     8000024:    f04f 0104     mov.w    r1, #4
     8000028:    5853          ldr    r3, [r2, r1]
     800002a:    ea40 0003     orr.w    r0, r0, r3
     800002e:    5050          str    r0, [r2, r1]
    
    
    08000030 <loop>:
     8000030:    f44f 5000     mov.w    r0, #8192    @ 0x2000
     8000034:    4a0a          ldr    r2, [pc, #40]    @ (8000060 <again+0xa>)
     8000036:    f04f 0110     mov.w    r1, #16
     800003a:    5050          str    r0, [r2, r1]
     800003c:    f000 f809     bl    8000052 <delay>
     8000040:    f04f 5000     mov.w    r0, #536870912    @ 0x20000000
     8000044:    4a06          ldr    r2, [pc, #24]    @ (8000060 <again+0xa>)
     8000046:    f04f 0110     mov.w    r1, #16
     800004a:    5050          str    r0, [r2, r1]
     800004c:    f000 f801     bl    8000052 <delay>
     8000050:    e7ee          b.n    8000030 <loop>
    
    
    08000052 <delay>:
     8000052:    f44f 1480     mov.w    r4, #1048576    @ 0x100000
    
    
    08000056 <again>:
     8000056:    3c01          subs    r4, #1
     8000058:    d1fd          bne.n    8000056 <again>
     800005a:    4770          bx    lr
     800005c:    40021000     .word    0x40021000
     8000060:    40011000     .word    0x40011000
    Åùå ðàç íàïîìèíàþ. Âîçìîæíî äîñòàòü èç ÿùèêà ðàñïáåðè, ñêà÷àòü èç èíòåðíåòà îáðàç ôëåøêè ñ ëèíóêñîì äëÿ íåå, ïîäöåïèòü ìîíèòîð ñ êëàâèàòóðîé èëè óäàëåííî ýñýñàøåì â íåå çàéòè, ïîäêëþ÷èòü áóåðáðîä èç áëþ-ïèë è ïðîãðàììàòîðà, è ñîçäàòü ïðîãðàììó. Êóáû è õàëû íèêòî íå îòìåíÿåò, âñåìó ñâîå ìåñòî ïîä ñîëíöåì. Ïðîñòî, åñëè âû áóäåòå èçó÷àòü íå ìê è ïðîãðàììèðîâíèå, à ïðèêëàäíîé ñîôò, òî ýòî êàê áû ïîäìåíèò ñîáîé èçíà÷àëüíóþ öåëü è áóäåò âàñ òî è äåëî îòâëåêàòü îò ðåøåíèÿ îñíîâíîé çàäà÷è. Êàæäûé ñàì ðåøàåò, è äà, çà êîãî-òî ðåøàåò íà÷àëüíèê, íî ýòî óæå íå ëþáèòåëüñòâî. È ýòî, åùå ðàç ïîâòîðþñü, òîëüêî îäíî ìíåíèå, è òîëüêî îäíîãî ðàäèîëþáèòåëÿ, ñîâñåì åùå çåëåíîãî ïî ñóòè. (:

    Âëàäèìèð_Ê
    Íó òàê ÿ ïîòîìó àâð è èçó÷àë ïî àòòèíè13, è ñåé÷àñ êëîíû f103 è ïðîñòåéøèé f030. Äëÿ íà÷àëà õâàòàåò. Ëåæàò êèòàéñêèå "ñýìïëû" ñ ìîäåëÿìè ïîñòàðøå â àíòèñòàòè÷åñêèõ ìåøî÷êàõ, çàãîäÿ ïðèïàñåííûå. (: Òóò åùå âîïðîñ äîêóìåíòàöèè. Ñëàáîå äîêóìåíòèðîâàíèå àíàëîãîâ. Ìèêðî÷èï è ÑÒ ñíèìàþò, âîáùåì-òî, âñå âîïðîñû ñ èíôîðìàöèåé. Áîëüøèíñòâî "áàãîâ" ïî òîìó æå ôîðóìó Ýëåêòðîíèêñà, îò íåâíèìàòåëüíîãî èçó÷åíèÿ ìàò÷àñòè. Íàðîäíàÿ ýððàòà òîæå èìååò ìåñòî áûòü. Òóò äåéñòâèòåëüíî èëè ôîðóì ïðîôåññèîíàëîâ, èëè ðàçðàáîò÷èêà. Ýòî ÿ, â ïðèíöèïå, ê ÷åìó - Èçó÷àÿ òîò æå avr è ïåðåõîäÿ ê äîïóñòèì, esp32, ñðàçó îùóùàåøü íåõâàòêó äîñòîâåðíîé èíôîðìàöèè îò ðàçðàáîò÷èêà. Òàêîå ïîêà ñëîæèëîñü ìíåíèå.
    Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü ozforester; 15.04.2023 â 12:02.

  7. #6
    Ìàíóàë, íàïðèìåð íà STM32F030, cîäåðæèò áîëüøå 700 ñòðàíèö. Òàê ÷òî äëÿ áûñòðîãî âõîæäåíèÿ âñå ÷òî óãîäíî, òîëüêî íå àññåìáëåð. Ïîêà ðàçáåðåòåñü õîòÿ áû ñ òàêòèðîâàíèåì ïåðèôåðèè, äåíü ïðîéäåò. Òàê ÷òî CubeMX è CubeIDE. ß ïðåäïî÷åë Keil, îêàçûâàåòñÿ CubeIDE ñóùåñòâóåò òîëüêî äëÿ 64 ðàçðÿäíîé ñèñòåìû (à ìîæåò îøèáñÿ, íî âñå ÷òî ÿ ñêà÷èâàë, ìíå âûäàåò, ÷òî ó ìåíÿ ãðàíàòû íå òîé ñèñòåìû. Ïîýòîìó ñïåöèàëüíî ñîáðàë êîìïüþòåð ñ 64 ðàçðÿäíûì Windows. À ïðåæíèé, íó íèêàê íåëüçÿ. Òàì, íàïðèìåð çâóêîâàÿ E-MU 1212, à äëÿ íåå íàøåë íîðìàëüíûé äðàéâåð òîëüêî äëÿ 32 ðàçðÿäíîé ñèñòåìû.  ïðåäûäóùåì ñîîáùåíèè, ìàëîñü ïåðåïóòàë ïðåæíèå öåíû - èñïðàâèë. Ãäå-òî 3 äîëë. ñòîèëà ñèíÿÿ ïëàòà ñ STM32F103.

  8. #7

    Ðåãèñòðàöèÿ
    14.06.2018
    Àäðåñ
    Ñàíêò-Ïåòåðáóðã
    Ñîîáùåíèé
    1,622
    Íó, ÿ äî òîãî êàê ñåñòü çà ðóëü, äîëãî ÷èòàë "ó÷åáíèê øîô¸ðà òðåòüåãî êëàññà" è íè÷åãî, äî ñèõ ïîð âñïîìèíàþ òå âðåìåíà ñ òåïëîòîé. Ïîíèìàþ î ÷¸ì Âû, ïðîñòî íà ôîðóìå åñëè íå ñïîðèòü, òî ñòàíîâèòñÿ êàê-òî ïðåñíî. Äàòàøèòû ãîä ÷èòàë, íèêòî íå ïîäãîíÿë. Òåïåðü çíàþ ÷òî è ãäå "ëåæèò" è "êòî íà êîì ñòîÿë". Íå áûë áû óâåðåí, ÷òî íå ïðèãîäèòñÿ, íå ñòàë áû âíèêàòü. Ïî ïðîôåññèÿì ïðèõîäèëîñü áîëüøèå ïîòîêè èíôîðìàöèè ïåðåâàðèâàòü, âñåãäà ìèíèìèçèðîâàòü ñòàðàþñü è ïðîñòî òàê íè÷åãî íå çàïîìèíàþ. Èç òåõ 700 ñòðàíèö, êîãäà ýòî íå ïåðâûé â æèçíè äàòàøèò, âûõâàòûâàåøü òîëüêî íóæíûå äåñÿòü â îäíîì ìåñòå è ïî îäíîé-äâå-òðè åùå â íåñêîëüêèõ. Ïðèìåðíî òàêîé ïðîöåññ. È ýòî ïîòîìó, ÷òî stm32 - äëÿ ìåíÿ óæå âòîðîé ïðîöåññîð, ñ àòìåãàìè áûëî çíà÷èòåëüíî òðóäíåå è äîëüøå, è ëàáû íå ñ ïåðâîãî ïîäõîäà, îíè áûëè ïåðâûìè. Âñåãäà õî÷ó ïåðåéòè ê Ñè è àáñòðàêöèÿì. Ïîíèìàþ íåîáõîäèìîñòü CMSIS è áèáëèîòåê, íî íå õî÷ó ïåðåïðûãèâàòü ÷åðåç íåñêîëüêî ñòóïåíåê. Îïÿòü æå, íèêòî íå ïîäãîíÿåò. Ðàáîòàòü âñå ðàâíî íå ñìîãó, à êàê õîááè èíòåðåñíî.
    P.S. Äîáàâëþ, ÷òî íèêàêèå ëàáû è ìàò÷àñòü íå îòìåíÿþò îïûò ïðàêòè÷åñêîãî ïðîãðàììèðîâàíèÿ. Ýòî, íàäåþñü, âñå çäåñü ïîíèìàþò è íå çàáûâàþò. Ìîæíî òàê ñêàçàòü ðàñïàðàëëåëèòü ïðîöåññ. Ïîñòàâèòü òèïîâîé ñîôò è êîïèïàñòèòü ïîíà÷àëó ãîòîâûé êîä, îäíîâðåìåííî óãëóáëÿÿñü â òåìó. Áóäåò âîçìîæíîñòü áûñòðî "íàáèòü øèøêè" ñ ÿçûêîì ïðîãðàìèðîâàíèÿ è ñðåäîé. Àññåìáëåð ïðîùå, òàê êàê ýòî ïî÷òè-ïî÷òè ÿçûê ìèêðîêîíòðîëåðà. Îïÿòü æå ïðè îòëàäêå ïîäîáíûå çíàíèÿ ìîãóò áûòü âîñòðåáîâàíû. Ëþáèòåëüñòâî è åñòü ïî ñóòè ñïëîøíàÿ îòëàäêà è ïèëîòíûé ïðîåêò.
    pps Ñ îðãòåõíèêîé èñïîëüçóþ âèðòóàëèçàöèþ ïî âîçìîæíîñòè. Îíà ñàìà ïî ñåáå ñëîæíàÿ øòóêà. íî ýòî êàê áû ó ìåíÿ áîíóñ, ÿ ñ íåé íåìíîãî ñòàëêèâàëñÿ ïî ðàáîòå. Âèðòóàëèçàöèÿ ñðàçó çàêðûâàåò è âîïðîñû ñâÿçàííûå ñ áåçîïàñíîñòüþ, è îòêàòèòü ìîæíî ëþáóþ âèðòóàëêó â ëþáîå ïðåäûäóùåå ñîñòîÿíèå. åñëè ïðî ñíýïøîòû íå çàáûâàòü. Íå âñÿêàÿ ïåðèôåðèÿ ïðîáðàñûâàåòñÿ ÷åðåç õîñò(ãèïåðâèçîð èëè ÷òî òàì), íî îáû÷íî ýòî íå òðåáóåòñÿ. Òåìà î÷åíü áîëüøàÿ. Ïðîñòî íàïîìèíàþ ïðî åå ñóùåñòâîâàíèå, êàê âàðèàíò.
    Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü ozforester; 15.04.2023 â 12:34.

  9. #8
    Öèòàòà Ñîîáùåíèå îò ozforester Ïîñìîòðåòü ñîîáùåíèå
    Íó òàê ÿ ïîòîìó àâð è èçó÷àë ïî àòòèíè13, è ñåé÷àñ êëîíû f103 è ïðîñòåéøèé f030. Äëÿ íà÷àëà õâàòàåò.
    ß íå èçó÷àþ ïðîñòî ëèøü äëÿ òîãî, ÷òîáû èçó÷èòü. Áåðó ÷òî åñòü ïîä ðóêîé èëè âûáèðàþ ñ ïðèåìëåìûìè ìíå ïàðàìåòðàìè è, ïîñìàòðèâàþ íà öåíó, èíîãäà. È íà÷èíàþ âàÿòü. Âîò ñåé÷àñ ðåøèë ïåðåäåëàòü ïëàòó òðàíñèâåðà, äàâíî èçãîòîâëåííîãî, íî òàì ïëàòà ñèíòåçà è âñåãî óïðàâëåíèÿ ìàëîñòü ïîâðåæäåíà, äà è íåìíîãî óñòàðåëà. Ðåøèë ïåðåâåñòè íà STM32, ïî íîâîé ðàçâåñòè, ñ Äèïòðåéñîì ðàçâîäêà ïëàòû îäíî óäîâîëüñòâèå. Íî, óïåðñÿ â ïðîáëåìó íå õâàòàåò íîã (ïðèäåòñÿ èçîùðÿòüñÿ). Ïðîöåññîð STM32G030F6P6, ýòî èç òåõ, ÷òî ñåé÷àñ ïðîäàþòñÿ ïî ïðèåìëåìîé öåíå. Îêàçàëîñü ÷òî åãî íåò â ïåðå÷íå CubeMX, íàäî ñòàâèòü ïîñëåäíþþ âåðñèþ. Äà è íîã íå õâàòàåò. Òàê ÷òî, òî ÷òî áûëî ðàíåå ñäåëàíî íà Atmega328, íå òàê ïðîñòî ïåðåâåñòè íà íîâîìîäíóþ ïëàòôîðìó. Èëè íàäî èçðÿäíî ïîòðÿñòè áþäæåò. È äëÿ ÷åãî? Ìíîãî ïàìÿòè ó STM32 è âûøå òàêòîâàÿ ÷àñòîòà? Òàê ïàìÿòü ñúåñò Hal. Èëè ïðèäåòñÿ êðîïîòëèâî ñìîòðåòü íà ðåãèñòðû è ïèñàòü ïðîãðàììó íåïîñðåäñòâåííî îáðàùàÿñü ê ðåãèñòðàì. Îíî êîíå÷íî â áóäóùåì ïðèãîäèòñÿ, ïîòîì ìîæíî áóäåò íå çàãëÿäûâàòü â äîêóìåíòàöèþ. Íî ýòî óæå áóäåò àêòóàëüíî, êîãäà ïîÿâèòñÿ êó÷à íàðàáîòîê. Òîãäà ïðîùå, áåðåøü êóñîê êîäà, èíîãäà ÷óòü óòî÷íÿåøü è âïåðåä. Äàæå è íà àññåìáëåðå. Âîò åæåëè åñòü íà àññåìáëåðå ïðîãðàììà (áèáëèîòåêà) äëÿ óïðàâëåíèÿ Si5351A, íàïðèìåð, áóäó ïðèçíàòåëåí.

  10. #9

    Ðåãèñòðàöèÿ
    14.06.2018
    Àäðåñ
    Ñàíêò-Ïåòåðáóðã
    Ñîîáùåíèé
    1,622
    Ñ ñèøêîé ñïëîøíàÿ ìàòåìàòèêà, à îíà â àòòèíè13 íå âëàçèò ñ ïîëåçíîé íàãðóçêîé. Íåñêîëüêî ïîïûòîê äåëàë âïèõíóòü ïðîñòî ýíêîäåð, îëåä è ìàòåìàòèêó. Ñâåòà â êîíöå òóííåëÿ ïîêà íå óâèäåë. Åñëè ïðîñòî íåñêîëüêî òàáëèö ñ êîíñòàíòàìè ðåãèñòðîâ çàáðàñûâàòü â ñèøêó, òî âîïðîñ ëèøü â íàëè÷èè i2c_write, ÷òî è óïðàâëåíèåì íå íàçâàòü, íå ñïîðòèâíî, õîòÿ íåêîòîðûå ïðèêëàäíûå çàäà÷è ìîæåò çàêðûòü. Íà ãèòõàáå ëåæàò âàðèàíòû, òðåáóþò íàïèëüíèêà. Ìîæíî èãðàòü íà âûáîðå íåñêîëüêèõ íåïðåðûâíûõ äèàïàçîíîâ ñ ïîñòîÿííûì øàãîì, è óïðàâëÿòü ëèøü îäíèì ðåãèñòðîì íà èõ ïðîòÿæåíèè, ëîãèêó äåðæàòü â òàáëèöàõ. Ìîæíî ïîïðîáîâàòü, íî îøèáêà â åäèíèöû ãåðö âûáåæèò ïî ñðàâíåíèþ ñ óêàçàííîé íà îëåäå ÷àñòîòîé.  ïåðâîì ïðèáëèæåíèè ñìîòðåë, êàê èçìåíÿåòñÿ äåëèòåëü ïî ðåãèñòðàì. Òî÷íî íå ïðèêèäûâàë, â eeprom ìîæåò íå ïîìåñòèòüñÿ, à sram óæå çàíÿò ðåãèñòðàìè ñèøêè èëè ñòåêîì, çäåñü ñ êàêîãî áîêó íà ÿèöà ïîñìîòðåòü. 64 áàéòà âñåãî æå æ. Åñëè îïåðàöèè 64-áèòíûå, òî òîæå íà÷èíàåò èñïîëüçîâàòüñÿ sram, ðåãèñòðîâ íå õâàòàåò.. Attiny45 ìîæíî ïîïðîáîâàòü, íàâåðíîå íà íåé è âçëåòèò ñèíòåçàòîð àññåìáëåðíûé, íî òàê ñòì-êè íå èçó÷èòü. Çàáðîñèë ïîêà àâð-êè.
    p.s. Åñëè áû ñ àòìåãè íà÷èíàë, òî íàâåðíîå áû ïîëó÷èëñÿ ñèíòåçàòîð, à òàê âñå âðåìÿ óøî íà îïòèìèçàöèþ êîäà è â ðåçóëüòàòå ïîëó÷èëèñü êèëîáàéòíûå ÷àñû íà îëåäå ssd1306 è rtc ds1307 ñ âîçìîæíîñòüþ óñòàíîâêè äàòû è âðåìåíè îäíîé êíîïêîé. (-:
    Ïîñëåäíèé ðàç ðåäàêòèðîâàëîñü ozforester; 15.04.2023 â 15:12.


  11. #10
    Àòòèíè íå èìååò íà áîðòó àïïàðàòíîãî I2C. È îí íóæåí íå ïîòîìó, ÷òî íàïèñàòü ïðîãðàììó ïðîáëåìà, à äëÿ òîãî, ÷òîáû ïðîöåññîð íå îòâëåêàëñÿ íà âûïîëíåíèå ðàáîòû, êîòîðóþ óñïåøíî äåëàåò àïïàðàòíûé I2C, êàê è òîò æå UART.

Ñòðàíèöà 1 èç 42 123411 ... ÏîñëåäíÿÿÏîñëåäíÿÿ

Èíôîðìàöèÿ î òåìå

Ïîëüçîâàòåëè, ïðîñìàòðèâàþùèå ýòó òåìó

Ýòó òåìó ïðîñìàòðèâàþò: 1 (ïîëüçîâàòåëåé: 0 , ãîñòåé: 1)

Ïîõîæèå òåìû

  1. Àíàëèçàòîð kuchura ñ ãðàôèêîé íà STM32
    îò khach â ðàçäåëå Àíòåííûå ïðèáîðû
    Îòâåòîâ: 4198
    Ïîñëåäíåå ñîîáùåíèå: 18.10.2024, 13:33
  2. Ïîëíîöåííûé àäàïòåð USB-Serial ñ 3 UART ïîðòàìè íà STM32 Blue Pill (STM32F103C8T6)
    îò r2axz â ðàçäåëå Êîíñòðóêöèè íà ìèêðîêîíòðîëëåðàõ äëÿ ðàäèîëþáèòåëåé
    Îòâåòîâ: 26
    Ïîñëåäíåå ñîîáùåíèå: 24.03.2023, 11:06
  3. Àíàëîãè STM32
    îò RA1AGB â ðàçäåëå Êîíñòðóêöèè íà ìèêðîêîíòðîëëåðàõ äëÿ ðàäèîëþáèòåëåé
    Îòâåòîâ: 26
    Ïîñëåäíåå ñîîáùåíèå: 30.12.2022, 11:54
  4. TP3067+stm32
    îò PAVELk781 â ðàçäåëå Êîíñòðóêöèè íà ìèêðîêîíòðîëëåðàõ äëÿ ðàäèîëþáèòåëåé
    Îòâåòîâ: 12
    Ïîñëåäíåå ñîîáùåíèå: 23.06.2018, 19:45
  5. STM32 Discavery-ïåðâûé îïûò â ïðîãðàììèðîâàíèè íà Ñ
    îò DL2BDA â ðàçäåëå Êîíñòðóêöèè íà ìèêðîêîíòðîëëåðàõ äëÿ ðàäèîëþáèòåëåé
    Îòâåòîâ: 64
    Ïîñëåäíåå ñîîáùåíèå: 08.02.2017, 21:30

Âàøè ïðàâà

  • Âû íå ìîæåòå ñîçäàâàòü íîâûå òåìû
  • Âû íå ìîæåòå îòâå÷àòü â òåìàõ
  • Âû íå ìîæåòå ïðèêðåïëÿòü âëîæåíèÿ
  • Âû íå ìîæåòå ðåäàêòèðîâàòü ñâîè ñîîáùåíèÿ
  •