当前位置:网站首页>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
边栏推荐
- Ten thousand words detailed eight sorting must read (code + dynamic diagram demonstration)
- Global and Chinese market of resistivity meter 2022-2028: Research Report on technology, participants, trends, market size and share
- 1-stm32 operation environment construction
- Shape template matching based on Halcon learning [v] find_ cocoa_ packages_ max_ deformation. Hdev routine
- Baiwen 7-day smart home learning experience of Internet of things
- C language enhancement -- pointer
- Use of orbbec Astra depth camera of OBI Zhongguang in ROS melody
- [untitled] record the visual shock of the Winter Olympics and the introduction of the display screen
- Pointnet++ classification practice
- How to excavate and research ideas from the paper
猜你喜欢
Programming knowledge -- assembly knowledge
万字详解八大排序 必读(代码+动图演示)
Drive LED -- GPIO control
Realization of binary relation of discrete mathematics with C language and its properties
Embedded composition and route
Connection mode - bridge and net
[tutorial 15 of trio basic from introduction to proficiency] trio free serial communication
生产中影响滑环质量的因素
Hardware 1 -- relationship between gain and magnification
Mlperf training v2.0 list released, with the same GPU configuration, the performance of Baidu PaddlePaddle ranks first in the world
随机推荐
IC software learning
软件设计师:03-数据库系统
The firmware of the connected j-link does not support the following memory access
Global and Chinese markets of large aperture scintillators 2022-2028: Research Report on technology, participants, trends, market size and share
研究發現,跨境電商客服系統都有這五點功能!
C language uses arrays to realize the intersection, union, difference and complement of sets
Consul installation
Global and Chinese market of resistivity meter 2022-2028: Research Report on technology, participants, trends, market size and share
Shape template matching based on Halcon learning [vi] find_ mirror_ dies. Hdev routine
Altium designer 19.1.18 - clear information generated by measuring distance
Measurement fitting based on Halcon learning [II] meaure_ pin. Hdev routine
Shape template matching based on Halcon learning [VII] reuse_ model. Hdev routine
Altium designer 19.1.18 - Import frame
Communication standard -- communication protocol
Sql Server的存储过程详解
生产中影响滑环质量的因素
Train your dataset with yolov4
找不到实时聊天软件?给你推荐电商企业都在用的!
Some tips for using source insight (solve the problem of selecting all)
About yolov3, conduct map test directly