i.MX6ULL终结者SRTC实时时钟例程编译及运行

本文介绍了如何修改Makefile文件,针对RTC目标进行编译,包括添加头文件路径和源文件路径。在完成编译并生成rtc.bin文件后,赋予可执行权限并运行特定脚本生成最终的bare.imx镜像文件。该过程适用于嵌入式设备的固件更新,通过SSH将生成的镜像文件上传到烧录工具,然后进行烧录操作。烧录成功后,设备会显示倒计时,并根据按键操作设置或显示RTC时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先打开Makefile文件,在里面输入下面的内容:

  1 CROSS_COMPILE   ?= arm-linux-gnueabihf-
  2 TARGET ?= rtc
  3 
  4 CC := $(CROSS_COMPILE)gcc
  5 LD := $(CROSS_COMPILE)ld
  6 OBJCOPY := $(CROSS_COMPILE)objcopy
  7 OBJDUMP := $(CROSS_COMPILE)objdump
  8 
  9 LIBPATH := -lgcc -L /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib/gcc/arm    -linux-gnueabihf/4.9.4
 10 
 11 
 12 INCDIRS := core \
 13                                    stdio/include \
 14                                    drivers/clk \
 15                                    drivers/led \
 16                                    drivers/delay \
 17                                    drivers/beep \
 18                                    drivers/gpio \
 19                                    drivers/key  \
 20                                    drivers/exit \
 21                                    drivers/int  \
 22                                    drivers/epittimer    \
 23                                    drivers/keyfilter    \
 24                                    drivers/uart \
 25                                    drivers/lcd  \
 26                                    drivers/rtc
 27 
 28 SRCDIRS := ./   \
 29                                    stdio/lib \
 30                                    drivers/clk \
 31                                    drivers/led \
 32                                    drivers/delay \
 33                                    drivers/beep \
 34                                    drivers/gpio \
 35                                    drivers/key  \
 36                                    drivers/exit \
 37                                    drivers/int  \
 38                                    drivers/epittimer    \
 39                                    drivers/keyfilter    \
 40                                    drivers/uart \
 41                                    drivers/lcd  \
 42                                    drivers/rtc
 43 
 44 
 45 INCLUDE := $(patsubst %, -I %, $(INCDIRS))
 46 
 47 SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
 48 CFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.c))
 49 
 50 SFILENDIR := $(notdir  $(SFILES))
 51 CFILENDIR := $(notdir  $(CFILES))
 52 
 53 SOBJS := $(patsubst %, output/%, $(SFILENDIR:.S=.o))
 54 COBJS := $(patsubst %, output/%, $(CFILENDIR:.c=.o))
 55 OBJS := $(SOBJS) $(COBJS)
 56 
 57 VPATH := $(SRCDIRS)
 58 
 59 .PHONY: clean
 60         
 61 $(TARGET).bin : $(OBJS)
 62         $(LD) -Timx6ul.lds -o $(TARGET).elf $^ $(LIBPATH)
 63         $(OBJCOPY) -O binary -S $(TARGET).elf $@
 64 
 65 $(SOBJS) : output/%.o : %.S
 66         $(CC) -Wall -nostdlib -fno-builtin -c -O2  $(INCLUDE) -o $@ $<
 67 
 68 $(COBJS) : output/%.o : %.c
 69         $(CC) -Wall -Wa,-mimplicit-it=thumb -nostdlib -fno-builtin -c -O2  $(INCLUDE) -o $@ $<
 70         
 71 clean:
 72         rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS) $(SOBJS)

Makefile文件主要修改了下面几个地方:
第2行的TARGET变量赋值修改成rtc。
第26行添加rtc的.h文件到INCDIRS变量。
第42行添加rtc的.c文件到SRCDIRS变量。

链接脚本文件保持不变。

然后我们在终端输入“make”命令开始编译,如图 1所示:
在这里插入图片描述

图 1

编译完成,生成“rtc.bin”文件,如图 2所示:
在这里插入图片描述

图 2

然后在终端输入命令“chmod 777 create_imx”修改create_imx文件具有可执行权限,如图 3所示:
在这里插入图片描述

图 3

最后在终端运行命令“./create_imx rtc.bin”生成最终的镜像文件“bare.imx”,如图 4所示:
在这里插入图片描述

图 4

然后我们将生成的bare.imx文件通过SSH软件拷贝到mfg烧写工具内对应目录下,这一步可以参考前面的烧写章节。将拨码开关切换成烧写模式,上电烧写等待烧写完成,然后将拨码开关切换回启动模式,等待程序正常运行,我们可以看到屏幕显示3秒的倒计时,如图 5所示:
在这里插入图片描述

图 5

如果我们在显示倒计3秒计时的时候,按下开发板的KEY0,程序就会设置预设的时间到RTC(我们在main.c里面预设的时间是2020年1月10号 10:30:00),如图 6所示:
在这里插入图片描述

图 6

如果在倒计时3s内我们没有按下按键KEY0,程序进入显示时间界面,如图 7所示:
在这里插入图片描述

图 7

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值