Linux嵌入式开发
文章平均质量分 68
搁浅`
这个作者很懒,什么都没留下…
展开
-
Linux嵌入式开发 -- imx6ull 主频配置
imx6ull主频设置文章目录前言一、系统时钟来源二、7路PLL时钟源1. 介绍2. 主频设置3. 代码编写总结前言 对于imx6ull系列芯片而言,默认工作频率为396MHZ,但标准工作频率为528MHZ,甚至可以达到696MHZ,本章主要介绍如何将工作频率设置到528MHZ。一、系统时钟来源 打开开发板原理图: --第一张图为32.768KHz的晶振,为imx6ull的RTC时钟源; --第二张图为24MHz的晶振,其作为imx6ull内核以及其他外设的时钟源。.原创 2022-02-08 14:12:15 · 1733 阅读 · 0 评论 -
Linux嵌入式开发 -- 设置PLL及各路PFD
imx6ull系列芯片PLL各路PFD频率设定PLL参考手册第18章:Chapter 18:Clock Controller Module(CCM)文章目录前言一、System PLL中各PFD设定1. 代码编写二、USB1 PLL中各PFD设定1.代码编写三、注意事项前言 1. imx6ull芯片共有7路PLL,用于给外设提供时钟,部分PLL路还分4路PFD,本次设定主要针对System PLL及USB1 PLL以及对应的PFD进行设定,其他路根据实际需求再考虑是否设定。 2. 但是,Sy原创 2022-02-07 19:56:36 · 1958 阅读 · 0 评论 -
Linux嵌入式开发--bss段起始地址设置问题
bss段起始地址通常在链接脚本中,可自由设定代码每个段的链接地址;而针对bss,我们每次需进行bss清除操作,故需要提供bss的地址给汇编中;由于bss段字节对齐一般为4字节对齐(即地址最低位为0, 4, 8, C),所以起始地址也需要4字节对齐,否则会清除数据错乱而导致程序无法运行。比如,若bss段地址非4字节对齐:0x20000289,由于bss段数据一般为4字节对齐(也可8字节,16字节对齐,一般32位SOC而言,用4字节),故再进行清除时,汇编会根据起始地址在0x20000288开始清除操作原创 2022-01-20 16:52:46 · 962 阅读 · 0 评论 -
Linux嵌入式开发--bsp管理模式 及其 Makefile(主要介绍Makefile)
bsp管理模式及Makefile1. bsp管理bsp管理,说白了,就是只将相同内容或属性的文件放在同一个目录下,不同属性的文件分开存放,这样可以方便文件管理及查找。以imx6ull芯片实现跑马灯为例: --led亮灭过程实现三步骤:时钟使能,led初始化(GPIO管脚功能设定),延时设定; --bsp管理: 1)将三部分的文件分别存放不同文件夹下:clk.c/clk.h放于clk文件夹,led.c/led.h存放于led文件夹下,delay.c/delay.h存放于delay文件夹下原创 2022-01-19 17:34:17 · 982 阅读 · 0 评论 -
Linux嵌入式开发--汇编清除.bss段(stmia、cmp、ble指令)
汇编清除.bss指令(stmia, cmp, ble).global _start.global _bss_start_bss_start: .word __bss_start //代表_bss_start=__bss_start变量的值 //__bss_start的值来源于链接脚本.lds的.bss段获取的起始地址 //链接:[https://blog.csdn.net/qq_45804423/article/details/122548136](https://原创 2022-01-18 17:36:15 · 2738 阅读 · 3 评论 -
Linux嵌入式开发--gcc交叉编译
在Makefile中编写objs = start.o main.o //目标文件用一个变量表示,下方依赖调用时通过$(objs)实现ledc.bin: $(objs) //$(objs)代表上方所定义的几个文件,此处为ledc.bin(目标文件)的依赖文件 arm-linux-gnueabihf-ld -Ttext 0x87800000 $^ -o ledc.elf //Ttext + 地址 -> 代码段链接地址 //$^代表依赖文件集合 //-o 后加输出文件名,链接输出格式为elf原创 2022-01-17 21:22:10 · 1015 阅读 · 0 评论 -
Linux嵌入式开发--链接脚本
链接脚本文件格式名: .ldsSECTIONS{//精确控制了输入段在输出文件中的顺序、位置和所在段 .= 0X87800000; //. 为地址符号,该处申明链接的起始地址 .text: //.text代表从上述地址(代码段的起始地址)开始填入代码段信息 { start.o //其中一部分代码段 *(.text) //表示剩余所有代码段 } .rodata ALIGN(4) : {*(.rodata)}原创 2022-01-17 21:20:14 · 514 阅读 · 0 评论