linux下编译stc15f104w的坑

  闲来想起老本行,看到淘宝这款单片机小巧的,也便宜,买来玩玩。刚好装了wsl,想试下在ubuntu下编译,就不用keil这个大家伙了,百度看到都是推荐sdcc,安装也不困难,apt-get install sdcc,然后烧写方面,百度推荐了两个,一个stcflash.py,一个gSTC-ISP,都下载了,stcflash.py是python脚本,用法也简单,但是死活连不上stc15f104w,研究了下,里面好像没有对stc15f104w有支持,也罢,转向gSTC-ISP,这个需要编译的,但是没办法,wsl的ubuntu是阉割版的,很多环境不全,因为gSTC-ISP是有界面的,因此在编译时好像要有gnome的库?没细究,有明白的可以跟我聊下哈。反正就是编译不过,没法子,我也不想装这么多库,只能放弃在linux烧写的想法了,使用windows的stc-isp来下载呗,反正绿色版...哈哈哈。但是烧写进去后,发现功能死活没反应,仅仅是一个点灯都没反应(甚至开始怀疑我是不是已经忘了C怎么写了)。怀疑点有两个,1.编译器编译出来的代码有问题。2.烧写程序有问题。一开始想着编译器这么多linux下的运行着都在用着,应该不会错的,因此开始排查烧写程序。STC-ISP有一个示例,里面有下载烧写hex的按钮,找了一个uart的示例,然后用串口工具测了下,示例竟然没问题!!!芯片正常工作。问题来了,sdcc为什么编译出来的hex有问题呢。在百度查了好久,断断续续也有一周了吧,没有什么有关的sdcc编译资料,看来受众似乎挺小的哈哈。受到打击,差点就回来windows keil的怀抱了,突然想起,keil使用要选择芯片类型,那么sdcc毫无疑问也应该要选择芯片类型的,man了以下,stc15f104w应该是用-mmcs51,但是这个选项是默认的,也就是跟这个没关系,难受,不过有目标了,应该是跟编译选项有关的,继续找资料,最后找到一个linux下的sdcc的ide,打开我的文件,编译,日志打印了这么一串

sdcc -mmcs51 --iram-size 256 --xram-size 0 --code-size 8192  --nooverlay --noinduction --verbose --debug -V --std-sdcc89 --model-small "main.c" 

然后继续烧写,还是失败,但是我感觉就是这里的问题了-iram-size 256 --code-size 8192,但是实际芯片的片内falsh是4K,片内sram是128,改了下:

sdcc -mmcs51 --iram-size 128 --xram-size 0 --code-size 4096  --nooverlay --noinduction --verbose --debug -V --std-sdcc89 --model-small "main.c" 

烧写,!!!灯闪了,好了第一步完成,嘻嘻。

结论,百度的教程还是不太靠谱...或者也可能我选的芯片太小众...但是有效果就好,学到了。

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值