当前位置: 首页 > news >正文

陕西网站备案流程北京通州区网站建设

陕西网站备案流程,北京通州区网站建设,做网站知道访客ip,做网站排名费用多少钱一、链接脚本内存段(Memory Segments)总结1 .bss段用于存放未初始化或初始化为0的数据在运行时会被自动清零典型例子:static int bss_var; // 静态变量(全局或局部)int explicit_var 0; // 显式初始…

一、链接脚本

内存段(Memory Segments)总结

1 .bss段

         用于存放未初始化或初始化为0的数据

         在运行时会被自动清零

 典型例子:

static int bss_var;           // 静态变量(全局或局部)int explicit_var = 0;         // 显式初始化为0的全局变量

2. COMMON段

        用于存放未初始化的非静态全局变量

        链接时才确定最终大小和位置

        允许多个目标文件定义同名符号

典型例子:

int common_var;               // 未初始化的非静态全局变量

3. data段

        用于存放已初始化的全局变量和静态变量(非零值)

        需要在程序文件中保存实际的初始值

典型例子:

int global_var = 100;         // 初始化为非零值int global_array[] = {1,2,3}; // 初始化为非零数组

4.rodata段(只读数据段)

        存放程序的只读数据

        运行时受保护,不可修改

包含的数据类型:

  1) 字符串常量

  2)const修饰的全局变量

  3) 全局只读数组

  4) switch跳转表

  5) 浮点数常量

 典型例子:

const int MAX_VALUE = 100;    // const全局变量char* str = "Hello World";    // 字符串常量const int lookup[] = {1,2,3}; // 只读数组

各段的特点比较

段名初始化运行时可写链接特性
.bss自动清零可写编译时确定大小
COMMON自动清零可写链接时确定大小
.data需要初始值可写编译时确定大小
.rodata需要初始值只读编译时确定大小

关于段名中的通配符说明

在链接脚本中,经常会看到类似*(.rodata*)这样的写法,这里包含两个*通配符,它们有不同的含义:

1. 第一个`*`:

   - 表示收集所有输入文件中的相关段

   - 如果不加这个`*`,就只会收集特定文件的段

2. 第二个`*`(如`rodata*`中的`*`):

   - 用于匹配所有以`.rodata`开头的段名

   - 实际编译时会产生多种rodata相关的段,例如:

     - `.rodata`:基本的只读数据段

     - `.rodata.str1.1`:长度为1字节对齐的字符串常量

     - `.rodata.str1.4`:长度为4字节对齐的字符串常量

     - `.rodata.cst8`:8字节常量(如double类型的常量)

     - `.rodata.cst4`:4字节常量(如float类型的常量)

如果只写`*(.rodata)`而不是`*(.rodata*)`:

- 只会收集严格命名为`.rodata`的段

- 其他相关的只读数据段(如`.rodata.str1.1`等)会被遗漏

- 这些被遗漏的数据可能导致程序无法正常工作

这种通配符的使用是链接脚本中的常见做法,类似的还有:

- `*(.text*)`:收集所有代码相关的段

- `*(.data*)`:收集所有数据相关的段

脚本代码

SECTIONS    
{. = 0X87800000;.text :{obj/start.o*(.text)}.rodata ALIGN(4) : {*(.rodata*)}.data ALIGN(4) : {*(.data)}. = ALIGN(4) ;__bss_start = .;.bss ALIGN(4) : {*(.bss) *(COMMON)}__bss_end = .; 
}

.为定位计数器,当前位置;ALIGN(4),四字节对齐; __bss_start = .和__bss_end = .保存bss段的地址,对他进行清零; 

二、蜂鸣器原理

        1.底板原理图

                有源蜂鸣器:有震荡源,通过电流就响

                低电平导通,响

                需要把它的默认属性改为GPIO,要把他当外设

        2.功能复用

        3.电气属性

        4.输入输出方向

        5.数据寄存器

三、步骤

                1)初始化时钟

                2)设置引脚功能复用(GPIO)

                3)引脚电气属性(功率、电阻)

                4)设置外设引脚的输入输出方向

                5)设置数据寄存器拉低/拉高电平

四、代码

        1.结构

        2.bsp

            1)beep.c   
#include "beep.h"
#include "fsl_iomuxc.h"void init_beep(void)
{IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0);IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0x10B0);GPIO5->GDIR |= (1 << 1);
}void beep_on(void)
{GPIO5->DR &= ~(1 << 1);
}void beep_off(void)
{GPIO5->DR |= (1 << 1);
}void beep_nor(void)
{GPIO5->DR ^= (1 << 1);
}
 2)beep.h
#ifndef _BEEP_H_
#define _BEEP_H_extern void init_beep(void);
extern void beep_on(void);
extern void beep_off(void);
extern void beep_nor(void);#endif
        3)led.c
        4)led.h

        3.project

        1)main.c
#include "led.h"
#include "beep.h"
#include "MCIMX6Y2.h"void enable_clocks(void)
{CCM->CCGR0 = 0xFFFFFFFF;CCM->CCGR1 = 0xFFFFFFFF;CCM->CCGR2 = 0xFFFFFFFF;CCM->CCGR3 = 0xFFFFFFFF;        CCM->CCGR4 = 0xFFFFFFFF;CCM->CCGR5 = 0xFFFFFFFF;CCM->CCGR6 = 0xFFFFFFFF;  
}void delay(unsigned int n)
{while(n--);
}int main(void)
{enable_clocks();init_led();init_beep();while(1){led_nor();beep_nor();delay(0xFFFFF);}return 0;
}
        2)start.S
.global _start_start:ldr pc, =_reset_handlerldr pc, =_undefine_handlerldr pc, =_svc_handlerldr pc, =_prefetch_abort_handlerldr pc, =_data_abort_handlerldr pc, =_reserved_handlerldr pc, =_irq_handlerldr pc, =_fiq_handler_undefine_handler:ldr pc, =_undefine_handler_svc_handler:ldr pc, =_svc_handler_prefetch_abort_handler:ldr pc, =_prefetch_abort_handler_data_abort_handler:ldr pc, =_data_abort_handler_reserved_handler:ldr pc, =_reserved_handler_irq_handler:ldr pc, =_irq_handler_fiq_handler:ldr pc, =_fiq_handler_reset_handler:mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x12   //irqmsr cpsr, r0ldr sp, =0x80600000mrs r0, cpsrbic r0, r0, #0x1Forr r0, r0, #0x1F   //systemmsr cpsr, r0   ldr sp, =0x80400000bl _bss_clearb main_bss_clear:ldr r0, =__bss_startldr r2, =__bss_end
loop:mov r1, #0str r1, [r0]add r0, r0, #4cmp r0, r2blt loopbx lrfinished:b finished

http://www.dtcms.com/a/603980.html

相关文章:

  • html网站注册页面做面包网站
  • 深圳非凡网站建设公司杭州市建设监理协会网站
  • 怎么只做自己的电商网站如何做 网站的seo
  • 迁安三屏网站建设免费网站浏览器
  • 网站的劣势梵克雅宝官网旗舰店
  • 流行网站设计76款wordpress付费主题密码
  • 网站群建设公司佛山附近做网站的公司有哪些
  • 网站收录查询301网站跳转设置
  • 四川省化工建设有限公司网站百度短网址
  • 阿里网站建设网站建设修改教程视频教程
  • 网站空间500m是什么做水果代理去哪个网站
  • 网站定制公司哪家最权威lamp环境wordpress
  • 有学做衣服的网站吗新媒体运营师证书
  • 重庆网站排名优化教程电脑上自己做科目一的网站
  • 高权重网站做员会来顶排名做网站站长累吗
  • 蜗牛星际做网站服务器网站建设四个步骤
  • 汽车租赁网站建设内容青白江做网站的公司
  • 站酷设计网站怎样下载图片黄村专业网站开发公司
  • glitch做网站网站可以做的线下活动
  • wordpress建立企业网站公司建设网站时的注意事项
  • 兰州网站哪里做西宁建网站需要多少钱
  • 上海设立企业网站app如何推广
  • PHP+MySQL网站开发全程实例免费软件恢复微信聊天记录
  • 白云区建网站开发小程序用什么语言
  • 中信建设内部网站90设计网首页
  • 开放大学门户网站建设方案模板王字体网
  • 区域推广网站互联网培训
  • 响应式网站茶叶网站给个高质量的网站
  • html5 手机网站 模板在阿里怎样做单页销售网站
  • 织梦网站被攻击做网站万网