找回密码
 注册
关于网站域名变更的通知
查看: 633|回复: 3
打印 上一主题 下一主题

为什么招聘单片机工程师的时候要求精通C/C++

[复制链接]
  • TA的每日心情
    开心
    2023-6-2 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2021-8-3 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    为什么招聘单片机工程师的时候要求精通C/C++# v& B, [; I/ P1 m6 Q3 o, n: \

    该用户从未签到

    2#
    发表于 2021-8-3 18:16 | 只看该作者
    8位mcu上基本不会用到c++,随便写点啥,那flash/ram就满了。32位mcu经常都是百k的flash和几十k的ram了,想用c++的话是可以用的。不过更关键的还是面向对象的思维方式吧。

    该用户从未签到

    3#
    发表于 2021-8-3 18:27 | 只看该作者
    举个例子,要用个i2c外设,不管是硬件还是软件,就只有那么几个操作,随便写写就行了。但是如果是多个外设,就会是start stop ack nack waitack read/write这么几个操作,把他们抽象出来作为一个i2c对象,需要用到的管脚作为参数穿进去,然后把对象的指针交给外设驱动程序,外设驱动程序里再调用前面几个操作的函数指针,这样层次上就清晰多了。

    该用户从未签到

    4#
    发表于 2021-8-3 18:41 | 只看该作者

    0 @: J+ F* m! t6 u+ W: K嵌入式也有使用C++的情况,  就是使用C++在一些场合下可以大幅度提高开发速度.上个月刚完成了一个嵌入式 wifi 项目自研版本 wifidog , 大家知道wifidog是一个提供wifi侧配合服务器侧Portal功能的C语言开源程序, 整体代码量近1万行, 是很多厂家wifi提供Portal功能的选择, 在很多wifi设备中都可以找到wifidog这个开源软件.  我们用C++重新实现了整个Wifidog的全部功能, 并且做了大量的扩展和优化.  后期会对一些相关厂家开放授权,  对比原生版本wifidog, 有三大类优化:一个是实现HTTPS前向转发,  实现在各种情况下弹Portal的功能,   二是针对中国网络特殊情况的各种优化,  实现国际版本的苹果手机和安卓手机也能稳定的连接wifi网络, 正常上网的功能.主要中国的wifi与国际上的wifi有很大的不同, 与美国人民常用的服务器连接不良,  需要进行定制性的代码优化,  这就涉及大量TCP/IP底层的处理,  包括对apple手机的wifi和各种应用的探测包进行单独处理,  实现apple手机和笔记本自动判断该设备的wifi网络internet质量极优, 到美国facebook 之类大陆无法访问的多种应用服务器的带宽极大, 将此wifi设备的无线网络,  在苹果手机的可用无线网络自动排序到第一名, 避免出现苹果手机错误判断需要弹Portal的网络不良导致无法在苹果手机中显示此wifi.    对 安卓手机的类似网络探测包连接Google网络也有各种复杂的处理流程, 避免因为中国大陆对Google全部服务器的拦截, 造成部分型号手机(原生版本安卓)连接wifi后反复掉线的问题, 以及wifi图标显示!的问题, 以及避免原生版本Google安卓判断网络不良等, 实现在无法连接Google服务器的大陆地区, 原生版本的安卓手机也可以稳定的连接此wifi.  三是针对降低Portal服务器端压力的一些优化, 使用keepalive 等技术降低Portal服务器的压力等等.原生版本是C语言的开源wifidog代码,  全部用C++语言重新实现一遍, 采用C++的原因是由于公司有大量的基础库都是C++的,  在这些经过验证的基础库的加持下,  开发速度极高, 稳定性很好, 由于公司有各种C++高性能库加持,  C++开发的代码性能比开源C语言版本快N倍,  功能上扩展比较容易, 开发任务紧, 稳定性要求极高,  所有功能短时间内就开发验证完毕了, 累计含公司版权的代码量大约4万行, 其中80%以上是各种自研库代码.C++代码二进制大小是2.4M(ARM)-4.3M(MIPS), 比C语言原生版本的400KB大一个数量级, 静态编译, 主要是libstdc++.a 和libssl.a等库占用的空间, 已经在一些新款Wifi设备上测试使用.  这几款Wifi设备已经在使用512M/1G以上内存, 双核甚至更多CPU, FLash空间很大, 内置linux4.X版本, 嵌入式linux没有使用uclibc,  直接就是glibc,  各种空间浪费, 各种爽, 开发太快太方便了.总之,  如果需要在短时间内开发出来一个数万行代码的稳定版本, 使用C++11几乎是唯一选择, 起码智能指针的应用, 避免了指针的问题,  例如内存泄露,未初始化指针的崩溃等等问题
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-22 21:46 , Processed in 0.062500 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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