b***i 发帖数: 3043 | 1 我们的嵌入式项目使用基本的串口,大概每秒一共<1KB的数据进来,需要处理和存储。
我们需要TCP/IP,需要流行的基本库,比如gzip, JSON等。我们使用Linux来解决底层
的库,现在说说对C++11的感受。
目前,按照几位高手的启发,现在Visual Studio 2015下实验,TCP/IP的同步异步都试
过了,多线程也很简单。
我们目标是使用Xilinx SDK,还没有安装最新的2015.3,只装了2015.2,是g++4.9.1,
所以支持C++11,不完全支持C++14。Xilinx SDK用过几小时,基于Eclipse。Visual
Studio里面我建立一个Solution,然后建立多个Project,互相依靠。不知道Xilinx SDK
是不是也这样,可否把程序模块化,分成多个项目?按说Eclipse就可以这样,一个
workspace多个项目。网上很少能查到Xilinx SDK的信息,包括g++版本只能安装后看。
我原来虚拟机下的g++才4.4,费了好大劲才升级成4.9.3。公司还不让git,不让
sourceforge下载源代码,连asio都是自己在家下然后发给自己邮箱。
我们需要JSON,所以看了JSONcpp,似乎可以处理UTF-8的value,只要name是ASCII。似
乎Name是不是UTF-8也无关紧要。但是C++处理UTF-8还是不简单,连算个长度都需要<
codecvt>,转化成UTF-16。Visual Studio 2015居然报找不到symbol (std::codecvt..
.),8月就有人提了,还没有解决。对我们项目似乎影响不大,我们只需要保存用户存
的UTF-8信息,不用显示,因为我们的嵌入式系统也未必有他们的字体。所以我们只显
示第几个设备什么温度等,不需要显示设备的中文名什么的。
gzip在Java里直接支持,而C++需要下载第三方的库,比如boost。不知道是不是到了C+
+11/14里面?很多网上的信息都是2011年之前的。其他方面的信息也是这样不很清楚。
比如大部分boost都到了C++11里面,但是留了一些。幸亏有个asio处理TCP/IP,而
boost的gzipfilter就不知道现状。我不想用boost,因为太大,还有很多人说不成功。
看来,就是C++的用户少了,而C++11的用户更少。为什么用C++11呢?主要是为了尽量
节省自己开发轮子的时间,还有尽量模块化,封装等。至于继承什么的,用一些。高级
的特性基本不用。Lamda我都看不懂。所以我认为C帮不了我们什么,只能自己制造轮子
。感觉Java确实解决了很大问题,才这么流行。另外我们PC程序是C#的,所以如果Java
支持串口,GPIO,我们就真的都用Java了。 |
t**r 发帖数: 3428 | |
n******7 发帖数: 12463 | 3 2015年了,所以?
【在 t**r 的大作中提到】 : 2015年了,大兄弟。。。
|
m**u 发帖数: 541 | |
m**u 发帖数: 541 | |
m**u 发帖数: 541 | |
m**u 发帖数: 541 | |
m**u 发帖数: 541 | |
d****i 发帖数: 4809 | 9 I think what he means C++ 14 is the newest standard. But I'm still using
good old C++ 98, and only basic feature without all advanced features. But
it is good enough and does all the jobs.
【在 n******7 的大作中提到】 : 2015年了,所以?
|
b*******s 发帖数: 5216 | 10 新特性其实不是为嵌入式准备的,所以你用不上
【在 d****i 的大作中提到】 : I think what he means C++ 14 is the newest standard. But I'm still using : good old C++ 98, and only basic feature without all advanced features. But : it is good enough and does all the jobs.
|
|
|
k**********g 发帖数: 989 | 11 let me guess
你要的是轮子,而且是嵌入式的轮子。
你可能需要一些瑞士的工匠替你装嵌。 |
b***i 发帖数: 3043 | 12 我的嵌入式是666MHz ARM双核心,1GB内存,Linux 3.17,所以,新特性很多可以用上
。比如,thread, auto, 确定长度的整形变量类型int16, std::move, Lambda, 统一
的初值和矩阵赋初值格式, nullptr, Delegating Constructors(这个和Java一样了),
就好像手机是不是嵌入式,它和服务器台式机编程有多大不同?我前面说过,我宁愿用
Java,现在发现C++11已经很像Java了。
【在 b*******s 的大作中提到】 : 新特性其实不是为嵌入式准备的,所以你用不上
|
b***i 发帖数: 3043 | 13 你都没仔细看啊,轮子不是嵌入式也行啊,比如完美解决utf-8字符串长度的,C++11就
没有,asio也不在里面,gzip也是。这些都不是只有嵌入式才需要的?
【在 k**********g 的大作中提到】 : let me guess : 你要的是轮子,而且是嵌入式的轮子。 : 你可能需要一些瑞士的工匠替你装嵌。
|
i****k 发帖数: 668 | 14 这话说的不对,应该说现代的嵌入式和非嵌入式的系统的区别越来越小了。
【在 b*******s 的大作中提到】 : 新特性其实不是为嵌入式准备的,所以你用不上
|
l******n 发帖数: 62 | |
l*********s 发帖数: 5409 | 16 问题是即使库再小,不在标准库里新手要么找不到要么不知道怎么挑。
【在 l******n 的大作中提到】 : zlib可以实现gzip。很小的库
|
T********i 发帖数: 2416 | 17 第一,我不认为你的应用需要utf8分字符。
第二,如果你需要,我可以送你一个。几十行,我用了将近10年了。
第三,你这个根本不是嵌入式,就是标准的linux/posix系统。
【在 b***i 的大作中提到】 : 你都没仔细看啊,轮子不是嵌入式也行啊,比如完美解决utf-8字符串长度的,C++11就 : 没有,asio也不在里面,gzip也是。这些都不是只有嵌入式才需要的?
|
j******t 发帖数: 788 | 18 VC11++的很多特性,真的很慢。这里很多人可能都不承认,但是我用起来真的是很慢。
【在 T********i 的大作中提到】 : 第一,我不认为你的应用需要utf8分字符。 : 第二,如果你需要,我可以送你一个。几十行,我用了将近10年了。 : 第三,你这个根本不是嵌入式,就是标准的linux/posix系统。
|
b*******s 发帖数: 5216 | 19 do you mind to give some names?
【在 j******t 的大作中提到】 : VC11++的很多特性,真的很慢。这里很多人可能都不承认,但是我用起来真的是很慢。
|
w***g 发帖数: 5958 | 20 VC不知道,g++我这边一点问题都没有。这段时间我正在慢慢转C++14了。
可能我没用你说的慢特性吧。我应该是本版少数的几个性能党了,
至少目前我还没看到C++有啥制约我用足硬件性能的问题。
相反,C++11引入的线程库把不少以前需要用平台库
甚至手写的常用功能标准化了,写起来非常爽。前两天我刚写了一个
存储图片的数据库,磁盘调度用packaged task写的,非常干净,
HDD吞吐量可以做到>100MB/s,基本上能达到裸盘极限了。
如果用C写,可能能省几个点的CPU,但是程序的量可能得多好几倍,
还得依赖各种不标准的东西。
最近新出来的大数据平台grappa也是全面C++11了,传进去的都是
lambda,然后底层在他们自己实现的user-space thread库上跑,
性能秒杀spark和graphlab这些,写出来的程序也是非常漂亮。
我本来就是C++党,准备抛弃spark了。
要不你展开说说你有什么问题。
【在 j******t 的大作中提到】 : VC11++的很多特性,真的很慢。这里很多人可能都不承认,但是我用起来真的是很慢。
|
|
|
b***i 发帖数: 3043 | 21 我也不一定需要准确分字符,正式因为在PC端使用了C#,所以可以检查字符串长度,比
如规定JSon每个值不要太长出问题就行。不过你的utf8分字符还是送我吧。
我这个和嵌入式还是有共同点的,我要GPIO,要直接控制Framebuffer,没有其他UI,
比如mouse, keyboard, button, menu等。是自己写简单的直接控制显示屏的UI。
还有就是需要自己控制串口,用FPGA写串口,主要是因为主流的无法达到1Mbps以上和9
位这个要求。
我的文件存在sd卡上,从QSPI Flash读取ROMdisk到RAM。要做Linux kernel,程序要写
好一起和kernel build等。这些都是嵌入式的特征。但是,不是古老的无OS的嵌入式。
是类似Android的嵌入式了。
【在 T********i 的大作中提到】 : 第一,我不认为你的应用需要utf8分字符。 : 第二,如果你需要,我可以送你一个。几十行,我用了将近10年了。 : 第三,你这个根本不是嵌入式,就是标准的linux/posix系统。
|
T********i 发帖数: 2416 | 22 算了,我也懒得找了。给你一个git。比我的全。
https://gist.github.com/antonijn/9009746
和9
【在 b***i 的大作中提到】 : 我也不一定需要准确分字符,正式因为在PC端使用了C#,所以可以检查字符串长度,比 : 如规定JSon每个值不要太长出问题就行。不过你的utf8分字符还是送我吧。 : 我这个和嵌入式还是有共同点的,我要GPIO,要直接控制Framebuffer,没有其他UI, : 比如mouse, keyboard, button, menu等。是自己写简单的直接控制显示屏的UI。 : 还有就是需要自己控制串口,用FPGA写串口,主要是因为主流的无法达到1Mbps以上和9 : 位这个要求。 : 我的文件存在sd卡上,从QSPI Flash读取ROMdisk到RAM。要做Linux kernel,程序要写 : 好一起和kernel build等。这些都是嵌入式的特征。但是,不是古老的无OS的嵌入式。 : 是类似Android的嵌入式了。
|
g*********e 发帖数: 14401 | 23 哈 俺以前就是在x 做sdk的
【在 b***i 的大作中提到】 : 我们的嵌入式项目使用基本的串口,大概每秒一共<1KB的数据进来,需要处理和存储。 : 我们需要TCP/IP,需要流行的基本库,比如gzip, JSON等。我们使用Linux来解决底层 : 的库,现在说说对C++11的感受。 : 目前,按照几位高手的启发,现在Visual Studio 2015下实验,TCP/IP的同步异步都试 : 过了,多线程也很简单。 : 我们目标是使用Xilinx SDK,还没有安装最新的2015.3,只装了2015.2,是g++4.9.1, : 所以支持C++11,不完全支持C++14。Xilinx SDK用过几小时,基于Eclipse。Visual : Studio里面我建立一个Solution,然后建立多个Project,互相依靠。不知道Xilinx SDK : 是不是也这样,可否把程序模块化,分成多个项目?按说Eclipse就可以这样,一个 : workspace多个项目。网上很少能查到Xilinx SDK的信息,包括g++版本只能安装后看。
|
b***i 发帖数: 3043 | 24 参拜大牛,那PetaLinux你熟悉吗?
问一下,SDK下的项目是否像Visual STudio solution一样,可以多project,最后一个
可执行文件?我对Eclipse CDT不是很熟
【在 g*********e 的大作中提到】 : 哈 俺以前就是在x 做sdk的 : :
|
g*********e 发帖数: 14401 | 25
不熟 petaLogic是一家被x收购的公司
你说的sdk是vivado还是什么
【在 b***i 的大作中提到】 : 参拜大牛,那PetaLinux你熟悉吗? : 问一下,SDK下的项目是否像Visual STudio solution一样,可以多project,最后一个 : 可执行文件?我对Eclipse CDT不是很熟
|
b***i 发帖数: 3043 | 26 我说的sdk是指写 c c++的集成环境, Xilinx SDK, 和 vivado 一起下载,但是是软件
方面的,你是做vivado得马?
【在 g*********e 的大作中提到】 : : 不熟 petaLogic是一家被x收购的公司 : 你说的sdk是vivado还是什么
|
g*********e 发帖数: 14401 | 27
我以前做vivado里面的一个buttom
【在 b***i 的大作中提到】 : 我说的sdk是指写 c c++的集成环境, Xilinx SDK, 和 vivado 一起下载,但是是软件 : 方面的,你是做vivado得马?
|
z*****u 发帖数: 62 | 28 你用的visual studio 2015以前版本吧?那是对stl 的优化很差。g++和clang的支持要
好很多。
【在 j******t 的大作中提到】 : VC11++的很多特性,真的很慢。这里很多人可能都不承认,但是我用起来真的是很慢。
|
m********o 发帖数: 796 | 29 古老的嵌入式。。。你说的这些十多年前就做烂了
和9
【在 b***i 的大作中提到】 : 我也不一定需要准确分字符,正式因为在PC端使用了C#,所以可以检查字符串长度,比 : 如规定JSon每个值不要太长出问题就行。不过你的utf8分字符还是送我吧。 : 我这个和嵌入式还是有共同点的,我要GPIO,要直接控制Framebuffer,没有其他UI, : 比如mouse, keyboard, button, menu等。是自己写简单的直接控制显示屏的UI。 : 还有就是需要自己控制串口,用FPGA写串口,主要是因为主流的无法达到1Mbps以上和9 : 位这个要求。 : 我的文件存在sd卡上,从QSPI Flash读取ROMdisk到RAM。要做Linux kernel,程序要写 : 好一起和kernel build等。这些都是嵌入式的特征。但是,不是古老的无OS的嵌入式。 : 是类似Android的嵌入式了。
|