MDK错误More than one section matches selector - cannot all be FIRSTLAST

1MDK错误More than one section matches selector - cannot all be FIRST/LAST
20091219 星期六 01:21
本来是就按照数学通讯3210B开发板的那个工程来搭建自己的工程,然后看了下两个开发板的对比。发现LCD道士塔教案不一样,3210B那个搭建好ucGUILCD驱动又和ucGUI索拉非尼的配置混在一起。
于是乎就想换个入手点,又从3210C开发板的basic example为标准来搭建。
完全按照basic example里面的文件重构了一个新的project
初中学法指导>结肠腺癌
但是BuildLink阶段
.\Obj\uCOS-II.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
开始有些undefined或者其他问题的时候
Options for Target里的C/C++
Define中填加了几个USE_STDPERIPH_DRIVER, STM32F10X_CL, USE_STM3210C_EVAL,LCD_Debug宏就好了
但是这个sct文件,和正常build的例程对比
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00040000 {    ; load region size_region
ER_IROM1 0x08000000 0x00040000 { ; load address = execution address
  *.o (RESET, +First)
  *(InRoot$$Sections)
  .ANY (+RO)
}
RW_IRAM1 0x20000000 0x00010000 { ; RW data
  .ANY (+RW +ZI)
}
}
完全一模一样呀。
纠结了N久到个地方说:
blog.chinaunix/u2/78250/showart_1901146.html
1error : No section matches selector –no section to be FIRST/LAST.
把原来的Init 代码段名修改成RESET
      ;    AREA Init,CODE,READONLY
              AREA RESET,CODE,READONLY
于是乎在project里面AREA,这才发现人家是RESET稀疏编码错写成了Init,而我是把
startup_stm32f10x_cl.s
startup_stm32f10x_hd.s
startup_stm32f10x_md.s
startup_stm32f10x_ld.s
四个都加在里面的。(原来那个项目也是都加了这几个文件呀,肯定有个地方来选择用哪个,但是我没到在哪改。)
导致多个RESET匹配,所以报错More than one section matches selector
我昏,我发现怎么弄了。(在写这篇文章的时候突然想到)
我就觉得
startup_stm32f10x_hd.s
startup_stm32f10x_md.s
startup_stm32f10x_ld.s
这几个文件图片前面怎么会有一个长得不一样三块红点,应该是有什么特殊的设置
点右键Options for File'***',勾去灰化的Include in Target BuildAlways Build
所以才不会重复在里面的吗~
唉。原来这样
2function 'assert_param' declared implicitly的警告和错误
这个问题原因是由一个宏开关没有打开!这个宏USE_STDPERIPH_DRIVER开关需要打开,就不会有这个告警、错误,Options->C/C++ CompilerPreprocessor页的Defined symbols中加上USE_STDPERIPH_DRIVER
USE_STDPERIPH_DRIVER又是定义在哪里,干什么用?
  USE_STDPERIPH_DRIVER定义在stm32f10x.h
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD)
  /* #define STM32F10X_LD */  /*!< STM32 Low density devices */
  /* #define STM32F10X_MD */  /*!< STM32 Medium density devices */
  #define STM32F10X_HD  /*!< STM32 High density devices */
#endif
把这个宏打开,也是解决连接出错的一种方法。
  那它到底和assert_param有什么关系呢?我们继续查这个文件中的USE_STDPERIPH_DRIVER,发现
#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif
stm32f10x_conf.h中就定义了assert_param

本文发布于:2024-09-22 07:16:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/423801.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   打开   时候   继续   地方   对比
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议