zubax_gnss移植到STM32F407

发布者:GoldenSerenity最新更新时间:2022-05-05 来源: elecfans关键字:移植  STM32F407 手机看文章 扫描二维码
随时随地手机看文章

源码默认支持STM32F107芯片

STM32 HAL库测试:zubax_gnssbootloaderzubax_chibioschibiostesthalSTM32

STM32 ChibiOS/RT系统测试:zubax_gnssbootloaderzubax_chibioschibiosdemosSTM32


拷贝STM32F407默认配置文件

这三个文件是ChibiOS/RT系统主要的配置文件


源:zubax_gnssbootloaderzubax_chibioschibiosdemosSTM32RT-STM32F407-DISCOVERY

1

目的:zubax_gnssbootloadersrcos_config

2

# vi mcuconf.h


#define STM32_SPI_USE_SPI3                  TRUE //使用SPI3

#define STM32_USB_USE_OTG1                  TRUE //使用USB1

#define STM32_SERIAL_USE_USART1             TRUE //使用UART1


# vi halconf.h

#define HAL_USE_SPI                 TRUE //使能SPI

#define HAL_USE_SERIAL_USB          TRUE //使能SERIAL_USB

#define HAL_USE_USB                 TRUE //使能USB


# vi chconf.h

#define CH_DBG_ENABLE_STACK_CHECK           TRUE //DEBUG使用


拷贝board.h

源:zubax_gnssbootloaderzubax_chibioschibiososhalboardsST_STM32F4_DISCOVERY

3

目的:zubax_gnssbootloadersrcos_config

4

# vi board.h


#define GPIO_PORT_LED_CAN1              GPIOF   //用户程序CAN状态灯定义

#define GPIO_PIN_LED_CAN1               9

#define GPIO_PORT_LED_CAN2              GPIOF

#define GPIO_PIN_LED_CAN2               10

#define DEBUG_BUILD 1       //DEBUG开关


修改Makefile


# vi Makefile


SERIAL_CLI_PORT_NUMBER = 3  //UART调试口选择。-DSTDOUT_SD=SD$(SERIAL_CLI_PORT_NUMBER)


include zubax_chibios/rules_stm32f446.mk 


firmware中还需配置

pal_lld.h:(zubax_gnssfirmwarezubax_chibioschibiososhalportsSTM32LLDGPIOv2pal_lld.h)

因为F407使用的是GPIOv2


#define pal_lld_setport(port, bits) (((ioportid_t)(port))->BSRR.H.set = (uint16_t)(bits))   //添加强制类型转换,不然编译报错


#define PAL_MODE_STM32_ALTERNATE_PUSHPULL   16  //GPIOv2中没有定义

#define PAL_MODE_STM32_ALTERNATE_OPENDRAIN  17


air_sensor.cpp:zubax_gnssfirmwaresrcair_sensor.cpp


driver_(&SPID3, (GPIO_TypeDef*)GPIO_PORT_BAROMETER_CHIP_SELECT, GPIO_PIN_BAROMETER_CHIP_SELECT) //同上


配置board.cpp

board.cpp:zubax_gnssfirmwaresrcboard


const PALConfig pal_default_config = {

#if STM32_HAS_GPIOA

  {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,

   VAL_GPIOA_ODR,   VAL_GPIOA_AFRL,   VAL_GPIOA_AFRH},

#endif

#if STM32_HAS_GPIOB

  {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,

   VAL_GPIOB_ODR,   VAL_GPIOB_AFRL,   VAL_GPIOB_AFRH},

#endif

#if STM32_HAS_GPIOC

  {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,

   VAL_GPIOC_ODR,   VAL_GPIOC_AFRL,   VAL_GPIOC_AFRH},

#endif

#if STM32_HAS_GPIOD

  {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,

   VAL_GPIOD_ODR,   VAL_GPIOD_AFRL,   VAL_GPIOD_AFRH},

#endif

#if STM32_HAS_GPIOE

  {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,

   VAL_GPIOE_ODR,   VAL_GPIOE_AFRL,   VAL_GPIOE_AFRH},

#endif

#if STM32_HAS_GPIOF

  {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,

   VAL_GPIOF_ODR,   VAL_GPIOF_AFRL,   VAL_GPIOF_AFRH},

#endif

#if STM32_HAS_GPIOG

  {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,

   VAL_GPIOG_ODR,   VAL_GPIOG_AFRL,   VAL_GPIOG_AFRH},

#endif

#if STM32_HAS_GPIOH

  {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,

   VAL_GPIOH_ODR,   VAL_GPIOH_AFRL,   VAL_GPIOH_AFRH},

#endif

#if STM32_HAS_GPIOI

  {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,

   VAL_GPIOI_ODR,   VAL_GPIOI_AFRL,   VAL_GPIOI_AFRH}

#endif

};


编译


# git submodule update --init --recursive //子模块更新

# cd firmware

# make binaries RELEASE=1


# ls build/ -l

-rwxrwxr-x 1 thomas thomas 5257152 Nov  4 18:59 compound.elf

-rw-rw-r-- 1 thomas thomas  213040 Nov  4 18:59 com.zubax.gnss-2.2-4.0.16f8c7b.application.bin

-rw-rw-r-- 1 thomas thomas  278569 Nov  4 18:59 com.zubax.gnss-2.2-4.0.16f8c7b.compound.bin //包含bootloader和application

-rw-rw-r-- 1 thomas thomas 2560450 Nov  4 18:59 com.zubax.gnss.map


关键字:移植  STM32F407 引用地址:zubax_gnss移植到STM32F407

上一篇:ChibiOS/RT移植到STM32F407
下一篇:STM32 IAP 升级功能

推荐阅读最新更新时间:2024-11-13 10:45

基于tiny4412的Linux內核移植 --- 实例学习中断背后的知识(2)
平台 tiny4412 ADK Linux-4.9 概述 前面一篇博文基於tiny4412的Linux內核移植 --- 实例学习中断背后的知识(1)结合示例分析了一下新版kernel引入设备树和irq domain后中断幕后的一些知识,其中的示例只是使用gpio中断的一种方式,此外,还有一种,就像博文 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(1)中描述的那样,这种实现方式又是如何进行的呢?下面还是结合示例的方式分析。 正文 框图可以参考前一篇博文。 在前一篇博文的第三部分 GPIO控制器驱动中有一个函数我们没有分析,就是samsung_gpiolib_register,把这函数看懂了,后面的分
[单片机]
基于STM32F407的FreeRTOS学习笔记(10)
在介绍二进制信号量时曾经讲过,二进制信号量可以代替我们裸机开发中的标志位来使用。在裸机开发中我们使用标志位来表示某个事件是否发生,并且其他程序利用标记位的状态来判断程序是否可以继续进行。但是这种大量使用标记位的情况会导致代码的逻辑异常的复杂。 虽然使用二进制信号量可以很好的实现标志位的实现以及相应的任务安排,但是二进制信号量并不适用于大量的标志位。因为一个二进制信号量只能表示一个事件,假如我们的程序有大量的事件那有没有办法不用二进制信号量可以很好的管理这些事件呢? 这就是本期介绍的内容:事件位和事件组 在FreeRTOS中我们把一个用作判断事件是否发生的情况作为事件位,用0或1表示。它可以用来表示一个事件是否发生。比如函数
[单片机]
基于<font color='red'>STM32F407</font>的FreeRTOS学习笔记(10)
u-boot-2014.10移植(3)识别NOR Flash
主要是将我们使用的nor flash 型号添加到jedec_table中 File : drivers/mtd/jedec_flash.c jz2440 :MX29LV160DB 2M id= 0x2249, MX29LV160B 宏需要自己添加 #define MX29LV160B 0x2249 mini2440 :SST29LV1601 (AM29LV160DB) 35sectors id = 0x2249 // for jz2440 { .mfr_id = MT_MANUFACT, .dev_id = MX29LV160B,
[单片机]
stm32 移植uip
1 stm32 定义常量不要code 关键字 // 定义全1 地址常量 static const uip_ipaddr_t code all_ones_addr = #if UIP_CONF_IPV6 {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; #else /* UIP_CONF_IPV6 */ {0xffff,0xffff}; #endif /* UIP_CONF_IPV6 */ //定义全0地址常量 static const uip_ipaddr_t code all_zeroes_addr = #if UIP_CONF_IP
[单片机]
现场总线的开关量I/O模块设计:操作系统移植与驱动开发
5.1常用的嵌入式操作系统 当前常见的嵌入式操作系统主要有嵌入式Linux、Windows CE及VxWorks,在各个领域得到广泛应用,具有各自的特性与优势: ①从系统性能比较 Linux是一个成熟而稳定的网络操作系统,为嵌入式操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务、多进程的操作系统,支持广泛的计算机硬件,包括X86 ,Alpha、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分芯片,可以定制,其系统内核最小只有约134K B,在信息家电、工控等领域有广泛应用。 WinCE是一个软实时系统,具有模块化、结构化和基于Win32应用程序接口和与处
[嵌入式]
将Android移植到FS2410开发板上
一、目前进展 1.Android已经可以通过NFS在FS2410开发板上运行 二、目前缺陷 1.触摸屏没有校准 2.Android中时钟停止,结束zygote进程,系统重启,时钟更新,但再次停止不动 3.串口无法与GPRS模块通讯 三、移植步骤 一、移植Android内核到FS2410开发板上 1、从 de.google.com/p/android/downloads/list http://co de.google.com/p/android/downloads/list 上下载linux-2.6.25-android-1.0_r1.tar.gz 2、将内核解压到用户目录,如/home/wangan/kernel.
[单片机]
关于2440的MDK平台下移植ucOS2,遇到的问题,及解决办法
这几天,移植想把ucos2移植到自己的2440开发板上,可是苦于没资料啊,于是网上到处找资料,今晚终于调试通过了,把自己的问题及解决办法跟大家分享分享: 首先,建议大家到网上下载一个简单的ADS的例程,网上的在ADS上移植ucOS的例程很多,我也是随便下的一个,然后像移植单片机程序那样直接移植UCOS2就行了,编译的时候可能会报以下错误: .out_putled.axf: Error: L6238E: 2440init.o(Init) contains invalid call from '~PRES8 (The user did not require code to preserve 8-byte aligme
[单片机]
STM8L最小系统板移植Atomthreads成功
终于花了一天时间把atomthreads1.3移植到了STM8L151K4。由于之前有了移植STM8S的经验,这次整个过程清晰了很多。并且我也安装了STVP+COSMIC编译环境,因此这回也更加注重代码在不同编译器的兼容性。 原版Atomthreads1.3的port目录下有点乱,所有编译器的相关文件都放在同一个目录下,我同样对目录结果进行了调整。让代码看起来更易读。同时,原作包括的意法半导体的外设库,一方面太陈旧,一方面也只有一小部分驱动程序,使用起来不方便,还有更重要的是,这个库对STM8L不适用。因此我把最新的ST驱动库整个放了进来。 原作者之所以只拿了一小部分驱动,无非是考虑可能最后编译的二进制文件太大。其实这点不
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved