OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3436|回复: 1

开源32位类Arduino平台在Alientek mini上的使用

[复制链接]

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-8-16
在线时间
8 小时
发表于 2016-1-11 17:35:46 | 显示全部楼层 |阅读模式
本帖最后由 yuanruizhang 于 2016-1-12 11:28 编辑

这今天公司没太多工作,研究了一下maple,但是没有平台测试(板子在家里)。maple写程序就非常简单,这个不就说了,不了解的可以研究一下arduino两个类似的。在这里主要就是怎么怎么在maple下兼容原子的mini的板子。在maple下软件主要分为两个部分,一个是bootloader,这个主要就在maple下下载程序使用的,maple的板子默认使用的是PA5做状态灯,而原子的板子上的led有两个这里就用PD2了;在maple文件夹下找到bootloader文件夹。
maple-ide-0.0.12-windowsxp32\hardware\leaflabs\bootloaders\maple
我是用source insight打开文件,全是C语言了,easy!首先查看main文件:里面有很多个子函数,先不管他查看main函数找到setupLED();
int main (void) {
    systemReset();
    setupCLK();
    setupLED();
    setupUSB();

    strobePin (GPIOA,5,5,0x50000); /* start indicator */

    if (checkUserCode(USER_CODE_RAM)) {
        jumpToUser(USER_CODE_RAM);
    }

    while (1) {
      /* hack to perform the dfu write operation AFTER weve responded
         to the host on the bus */
      if (copyLock) {
        dfuCopyBufferToExec();
        copyLock = FALSE;
        dfuAppStatus.bwPollTimeout0 = 0x00;
        dfuAppStatus.bState = dfuDNLOAD_SYNC;
      }
    }

}

进入到子函数就可以看到LED灯的配置了,首先是配置APB2配置,maple使用的PA5,我们要改成使用PD2,非常easy吧。接下来直接修改就可以了。
void setupLED (void) {
  u32 rwmVal; /* read-write-modify place holder var */

  /* Setup APB2 (GPIOA) */
  rwmVal =  GET_REG(RCC_APB2ENR);
  rwmVal |= 0x00000020;             //0x00000004;
  SET_REG(RCC_APB2ENR,rwmVal);

  /* Setup GPIOA Pin 5 as PP Out */
SET_REG(GPIO_CRL(GPIOD), 0x00000100); //SET_REG(GPIO_CRL(GPIOA), 0x00100000);
/*
  rwmVal =  GET_REG(GPIO_CRL(GPIOA));
  rwmVal &= 0xFF0FFFFF;
  rwmVal |= 0x00100000;
  SET_REG(GPIO_CRL(GPIOA),rwmVal);
setPin(GPIOA,5);
*/
  rwmVal =  GET_REG(GPIO_CRL(GPIOD));
  rwmVal &= 0xFFFFF0FF;
  rwmVal |= 0x00000100;
  SET_REG(GPIO_CRL(GPIOD),rwmVal);



  setPin(GPIOD,2);
}

然后在maple_regs.h中添加#define GPIOD ((u32)0x40011400)
led io配置修改完了,剩下就是修改亮灯的地方了,其实上面的配置修改完了,剩余的点灯的地方就全在main.c这个文件里面了,所以就在main文件中找到strobePin(GPIOA,5,X,X);这样的语句,全部修改成strobePin(GPIOD,2,X,X);就可以了。
接下就要编译bootloader。这是需要电脑安装有arm-none-eabi-gcc就可以编译,如果没有安装也不要急在maple文件夹里面就有maple-ide-0.0.12-windowsxp32\hardware\tools\arm\bin。可以将这个路径添加到环境变量也可以不添加,随你自己了。
接下就开始编译。在编译之前需要手动在makefile所在目录下创建几个文件夹:build,build\usb_lib,build\stm32_lib.完成之后就可以编译了。
注意:因为要使用makefile来进行编译,那么首先系统中要make工具才可以,windows用户可以去gnu官网下载make工具。linux和mac os一般系统都带了。
编译过程中可能会出现无法找到etags,不用管它这是另外一个工具,和编译没太大关系,我们只需要能烧录的bin文件而已,如果是在windows下是使用mcuisp烧录,bin是无法使用的,可能是mcuisp软件有bug,但是hex文件就可以烧录,要产生hex文件就需要修改makefile:在makefile第117行处添加
hex: $(TARGET).hex
在115处修改为
build: elf bin lss sym hex
重新make一下就可以得到hex文件。
烧录hex或bin之后,bootloader就修改为我们自己的适用与alientek mini的bootloader了。
要maple下使用alientek mini光修改bootloader是没用的,还需要修改maple的core文件。这些文件在:maple-ide-0.0.12-windowsxp32\hardware\leaflabs\cores\maple下,
同样使用source insight打开。首先打开main函数,里面就是maple在编译时调用我们创建setup函数和loop函数的地方。然后打开boards.h里面就列举了maple官方板子,因为ide我还没搞清楚能不能修改,那么我们就找相近的修改,经过我自己观察maple板子就和mini比较相近。找到maple.cpp和maple.h,maple.cpp里面主要描述管脚的功能,就是什么可以做adc,什么脚可以做timer之内的,这些和我们没什么关系,因为这是芯片决定的,查看maple.h就找到我们要修改的地方,这里面定义了外设如何使用,比如led灯
#define BOARD_LED_PIN           13
第13脚在maple.cpp中的PIN_MAP中可以得知PIN_MAP中13元素,指的就是PA5(PIN_MAP是和芯片管脚一致,也可以直接查看数据手册)
我们需要修改到PD2,那将13改为25就可以。(别问为什么上面说了)
#define BOARD_LED_PIN            25
这时在到maple中写点灯代码了。在board中选第一个板子就可以了。

很easy吧,bootloader估计就没什么好改的了,有兴趣可以改成卡升级试试,这个是理论上可能,但是实际上估计够呛。
core文件还有很大的修改余地,甚至可以根据mini修改成mini专用的,但是这就需要时间了,本人写这个也只起个抛砖引玉而已,毕竟板子在家还没测试呢。

因为bootloader和core文件修改很简单,就不上传源代码了。

2016-01-12补充:
昨天没有硬件测试,今天测试了一下,在bootloader编译时makefile产生hex文件还需要修改一个地方,在makefile第157行到161行处修改为:
# Create final output file (.hex) from ELF output file.
%.hex: %.elf
        @echo
        @echo $(MSG_FLASH) $@
        $(OBJCOPY) -Oihex $< $@
之前makefile是用的 -O binary 所以产生的文件还是bin格式,只是后缀改成了hex而已。mcuISP报出打不开文件。重新修改就可以了。烧录好之后插上USB,电脑可以找到新设备,但是我用的是win7 64bit的系统,maple的驱动没办法用。
还在想办法解决。
maple中的bootloader有问题,在网上重新下一个,修改好了在附件。


maple-bootloader2.rar

661.63 KB, 下载次数: 286

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

354

主题

1475

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8097
金钱
8097
注册时间
2015-10-15
在线时间
2919 小时
发表于 2016-1-12 13:43:40 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 03:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表