当前位置:网站首页>Imx6ull bare metal development learning 1-assembly lit LED
Imx6ull bare metal development learning 1-assembly lit LED
2022-07-05 08:04:00 【Changjiang houlang blog】
adopt GNU ARM Assembly implementation is right led Light flashing control .
Programming environment building :
Development board : Wildfire Imx6ull mini plate
Programming environment :Ubuntu18.04 + VScode
Assemble the code directly :
/*******************
* file name : led.s
* author : Guizhiwei
* mailbox : [email protected]
* describe : Bare metal experimental test 1 Assembly light up led The lamp
********************/
.global _start @ Global label
/*****
* describe : _start function
*/
_start :
/*****
* Lighten up LED The lamp GPIO5_IO03
* Open drain output
*/
/*****
*1. Enable to control the clock
*/
ldr r0, =0x020c4068 @ Configuration register CCM_CCGR0
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =0x020c406C @ Configuration register CCM_CCGR1
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =0x020c4070 @ Configuration register CCM_CCGR2
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =0x020c4074 @ Configuration register CCM_CCGR3
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =0x020c4078 @ Configuration register CCM_CCGR4
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =0x020c407C @ Configuration register CCM_CCGR5
ldr r1, =0xffffffff
str r1, [r0]
ldr r0, =0x020c4080 @ Configuration register CCM_CCGR6
ldr r1, =0xffffffff
str r1, [r0]
/*****
*2.GPIO5_IO03 Reuse function configuration GPIO
*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 Address 229_0014h
*/
ldr r0, =0x02290014 @ Configuration register SNVS_TAMPER3
ldr r1, =0x5 @AL5
str r1, [r0]
/*****
*3.GPIO5_IO03 To configure IO Property function
*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3 Address 229_0058h
*BIT0 Swaying rate 0- Slow down
*BIT5-3 Driving ability R0/6 -110
*BIT7-6 Speed 100mhz-10
* BIT11 Open drain output enable 1- Turn on
*BIT12 The pull-down function is enabled 0- Close the pull-down button
*BIT13 Keep function 0
*BIT15-14 100K Up and down resistance -00
*BIT16 hys-0 close
* Set the configuration value :8B0-100010110000
*/
ldr r0, =0x02290058 @ Configuration register SNVS_TAMPER3
ldr r1, =0x08B0 @AL5
str r1, [r0]
/*****
*4. Set up GPIO5_IO03 For export
*GPIO5_GDIR Address 20A_C004
*GPIO5_DR Address 20A_C000
*/
ldr r0, =0x020AC004 @ Configuration register GPIO5_GDIR
ldr r1, =0x08 @BIT3
str r1, [r0]
/*****
*5 open GPIO LED
*/
ldr r0, =0x020AC000 @GPIO5_DR
ldr r1, =0x00 @BIT3
str r1, [r0]
/*****
*6 loop Cycling
*/
loop:
/**
* turn on the light
*/
ldr r0, =0x020AC000 @GPIO5_DR
ldr r1, =0x00 @BIT3
str r1, [r0]
/**
* Time delay
*/
bl delay
/**
* Turn off the lights
*/
ldr r0, =0x020AC000 @GPIO5_DR
ldr r1, =0x08 @BIT3
str r1, [r0]
/**
* Time delay
*/
bl delay
b loop
/**
* Time delay
*/
delay:
ldr r2, =0xfffff
ldr r3, =0x0
delay_loop:
sub r2,r2, #1
cmp r2,r3
bne delay_loop
mov pc,lr @ Return the main function
A simplified version of makefie
led.bin : led.s
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
clean:
rm -rf *.o led.bin led.elf led.dis
dump:
arm-linux-gnueabihf-objdump -D led.elf > led.dis
dowmload:
./imxdownload led.bin /dev/sdb
Final effect :
Probably 0.5s Time flashing .
Simple assembly delay code :
/**
* Time delay
*/
delay:
ldr r2, =0xfffff
ldr r3, =0x0
delay_loop:
sub r2,r2, #1
cmp r2,r3
bne delay_loop
mov pc,lr @ Return the main function 边栏推荐
- Arduino uses nrf24l01+ communication
- The research found that the cross-border e-commerce customer service system has these five functions!
- PMSM dead time compensation
- Compilation warning solution sorting in Quartus II
- 2021-10-28
- Shape template matching based on Halcon learning [VII] reuse_ model. Hdev routine
- Global and Chinese market of rammers 2022-2028: Research Report on technology, participants, trends, market size and share
- [professional literacy] core conferences and periodicals in the field of integrated circuits
- General makefile (I) single C language compilation template
- Consul安装
猜你喜欢

找不到实时聊天软件?给你推荐电商企业都在用的!
![Shape template matching based on Halcon learning [viii] PM_ multiple_ models. Hdev routine](/img/13/22a1915329f58acd54c40176f6f301.jpg)
Shape template matching based on Halcon learning [viii] PM_ multiple_ models. Hdev routine

Embedded composition and route

Create inf module in AMI code

Software designer: 03 database system

Cadence simulation encountered "input.scs": can not open input file change path problem

UEFI development learning 2 - running ovmf in QEMU

C language # and #

Volatile of C language

Carrier period, electrical speed, carrier period variation
随机推荐
Global and Chinese markets of large aperture scintillators 2022-2028: Research Report on technology, participants, trends, market size and share
Record the torch encountered by win10 cuda. is_ False problem in available()
Bluetooth hc-05 pairing process and precautions
Fundamentals of C language
Introduction of air gap, etc
Altium designer 19.1.18 - change the transparency of copper laying
About the problem that MySQL connector net cannot be cleared in MySQL
Mlperf training v2.0 list released, with the same GPU configuration, the performance of Baidu PaddlePaddle ranks first in the world
Correlation based template matching based on Halcon learning [II] find_ ncc_ model_ defocused_ precision. hdev
C WinForm [help interface - send email] - practice five
软件设计师:03-数据库系统
Global and Chinese market for blood typing 2022-2028: Research Report on technology, participants, trends, market size and share
Detailed explanation of pragma usage
Ten thousand words detailed eight sorting must read (code + dynamic diagram demonstration)
[popular science] some interesting things that I don't know whether they are useful or not
About yolov3, conduct map test directly
UEFI development learning 2 - running ovmf in QEMU
After installing the new version of keil5 or upgrading the JLINK firmware, you will always be prompted about the firmware update
Network port usage
Hardware 1 -- relationship between gain and magnification