0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【先楫半导体HPM6750EVKMINI评估板试用体验】基准性能测试之三:whetstone

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-18 15:24 次阅读
本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2284399_1_1.html


前言



之前我们使用dhrystonecoremark进行了相关的性能测试。这次我们使用whetstone进行测试,该测试关注浮点相关的计算性能。

获取代码

http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz
下载classic_benchmarks.tar.gz文件
解压文件
classic_benchmarksclassic_benchmarkssource_codewhetstone复制到工程目录
projled
添加代码

按照上一步将文件复制到工程目录下后,按照如下方式刷新
poYBAGKXHnqAQm5tAADWR_VH__k223.png

可以看到源码添加到了工程目录
pYYBAGKXfp6AJPliAABr2hT83jI622.png


修改代码

前面注释**************************************************************************少了/

注释掉#include"cpuidh.h"

注释掉getDetails

删除whets.txt相关操作

fprintf改为rt_kprintf


Main改为whetstone_main

pout调用时字符串中删除
浮点数都放大100倍整数打印

详见后面附录代码

main中调用
intcore_main(intargc,char*argv[]);
whetstone_main(0, 0);
测试

注以下结果放大100倍,整数打印
-O0
poYBAGKXfp-AGIthAAB6358qsZU470.png

-O3
pYYBAGKXfqCAe-PNAAB0niO1ofU654.png

RT_tiCK_PER_SECOND=1000
优化等级0
优化等级3
RAM中运行
MWIPS
38.970
44.858
ROM中运行

对比

可以从下网站看看打败了全国多少网友
http://www.roylongbottom.org.uk/whetstone%20results.htm
pYYBAGKXfqGAf1VnAACrn-d9iX4117.png
附whets.c代码


  1. /*gcc whets.c cpuidc64.o cpuida64.o -m64 -lrt -lc -lm -o whet
  2. *
  3. *Document: Whets.c
  4. *File Group: Classic Benchmarks
  5. *Creation Date: 6 November 1996
  6. *Revision Date: 6 November 2010 Ubuntu Version for PCs
  7. *
  8. *Title: Whetstone Benchmark in C/C++
  9. *Keywords: WHETSTONE BENCHMARK PERFORMANCE MIPS
  10. * MWIPS MFLOPS
  11. *
  12. *Abstract: C or C++ version of Whetstone one of the
  13. * Classic Numeric Benchmarks with example
  14. * results on P3 to P6 based PCs.
  15. *
  16. *Contributor: roy@roylongbottom.org.uk
  17. *
  18. ************************************************************
  19. *
  20. * C/C++ Whetstone Benchmark Single or Double Precision
  21. *
  22. * Original concept Brian Wichmann NPL 1960's
  23. * Original author Harold CurnowCCTA 1972
  24. * Self timing versions Roy Longbottom CCTA 1978/87
  25. * Optimisation control Bangor University 1987/90
  26. * C/C++ Version Roy Longbottom 1996
  27. * Compatibility & timersAl Aburto 1996
  28. *
  29. ************************************************************
  30. *
  31. * Official version approved by:
  32. *
  33. * Harold Curnow100421.1615@compuserve.com
  34. *
  35. * Happy 25th birthday Whetstone, 21 November 1997
  36. *
  37. ************************************************************
  38. *
  39. * The program normally runs for about 100 seconds
  40. * (adjustable in main - variable duration). This time
  41. * is necessary because of poor PC clock resolution.
  42. * The original concept included such things as a given
  43. * number of subroutine calls and divides which may be
  44. * changed by optimisation. For comparison purposes the
  45. * compiler and level of optimisation should be identified.
  46. *
  47. * This version is set to run for 10 seconds using high
  48. * resolution timer.
  49. *
  50. ************************************************************
  51. *
  52. * The original benchmark had a single variable I which
  53. * controlled the running time. Constants with values up
  54. * to 899 were multiplied by I to control the number
  55. * passes for each loop. It was found that large values
  56. * of I could overflow index registers so an extra outer
  57. * loop with a second variable J was added.
  58. *
  59. * Self timing versions were produced during the early
  60. * days. The 1978 changes supplied timings of individual
  61. * loops and these were used later to produce MFLOPS and
  62. * MOPS ratings.
  63. *
  64. * 1987 changes converted the benchmark to Fortran 77
  65. * standards and removed redundant IF statements and
  66. * loops to leave the 8 active loops N1 to N8. Procedure
  67. * P3 was changed to use global variables to avoid over-
  68. * optimisation with the first two statements changed from
  69. * X1=X and Y1=Y to X=Y and Y=Z. A self time calibrating
  70. * version for PCs was also produced, the facility being
  71. * incorporated in this version.
  72. *
  73. * This version has changes to avoid worse than expected
  74. * speed ratings, due to underflow, and facilities to show
  75. * that consistent numeric output is produced with varying
  76. * optimisation levels or versions in different languages.
  77. *
  78. * Some of the procedures produce ever decreasing numbers.
  79. * To avoid problems, variables T and T1 have been changed
  80. * from 0.499975 and 0.50025 to 0.49999975 and 0.50000025.
  81. *
  82. * Each section now has its own double loop. Inner loops
  83. * are run 100 times the loop constants. Calibration
  84. * determines the number of outer loop passes. The
  85. * numeric results produced in the main output are for
  86. * one pass on the outer loop. As underflow problems were
  87. * still likely on a processor 100 times faster than a 100
  88. * MHz Pentium, three sections have T=1.0-T inserted in the
  89. * outer loop to avoid the problem. The two loops avoid
  90. * index register overflows.
  91. *
  92. * The first section is run ten times longer than required
  93. * for accuracy in calculating MFLOPS. This time is divided
  94. * by ten for inclusion in the MWIPS calculations.
  95. *
  96. * Early version has facilities for typing in details of
  97. * the particular run, appended to file whets.txt along
  98. * with the results. This version attemps to obtain these
  99. * automatically.
  100. *
  101. * 2010 Section 4 modified slightly to avoid over optimisation
  102. * by GCC compiler
  103. *
  104. * Roy Longbottomroy@roylongbottom.org.uk
  105. *
  106. ************************************************************
  107. *
  108. * Whetstone benchmark results, further details of the
  109. * benchmarks and history are available from:
  110. *
  111. * http://www.roylongbottom.org.uk/whetstone%20results.htm
  112. * http://www.roylongbottom.org.uk/whetstone.htm
  113. *
  114. ************************************************************
  115. *
  116. * Source code is available in C/C++, Fortran, Basic and
  117. * Visual Basic in the same format as this version. Pre-
  118. * compiled versions for PCs are also available via C++.
  119. * These comprise optimised and non-optimised versions
  120. * for DOS, Windows and NT. See:
  121. *
  122. * http://www.roylongbottom.org.uk/whetstone%20results.htm
  123. *
  124. ************************************************************
  125. *
  126. * Example of initial calibration display (Pentium 100 MHz)
  127. *
  128. * Single Precision C/C++ Whetstone Benchmark
  129. *
  130. * Calibrate
  131. * 0.17 Seconds 1 Passes (x 100)
  132. * 0.77 Seconds 5 Passes (x 100)
  133. * 3.70 Seconds 25 Passes (x 100)
  134. *
  135. * Use 676passes (x 100)
  136. *
  137. * 676 passes are used for an approximate duration of 100
  138. * seconds, providing an initial estimate of a speed rating
  139. * of 67.6 MWIPS.
  140. *
  141. * This is followed by the table of results as below.
  142. * Whetstone SinglePrecision Benchmark in C/C++
  143. *
  144. * Loop content Result MFLOPS MOPS Seconds
  145. *
  146. * N1 floating point -1.12475025653839100 19.971 0.274
  147. * N2 floating point -1.12274754047393800 11.822 3.240
  148. * N3 if then else 1.00000000000000000 11.659 2.530
  149. * N4 fixed point 12.00000000000000000 13.962 6.430
  150. * N5 sin,cos etc. 0.49904659390449520 2.097 11.310
  151. * N6 floating point 0.99999988079071040 3.360 45.750
  152. * N7 assignments 3.00000000000000000 2.415 21.810
  153. * N8 exp,sqrt etc. 0.75110864639282230 1.206 8.790
  154. *
  155. * MWIPS 28.462 100.134
  156. *
  157. *Note different numeric results to single precision. Slight variations
  158. *are normal with different compilers and sometimes optimisation levels.
  159. *
  160. **************************************************************************/
  161. #include /* for sin, exp etc. */
  162. #include /* standard I/O */
  163. #include /* for strcpy - 3 occurrences*/
  164. #include /* for exit - 1 occurrence */
  165. //#include "cpuidh.h"
  166. /*PRECISION PRECISION PRECISION PRECISION PRECISION PRECISION PRECISION*/
  167. /* #define DP */
  168. #ifdef DP
  169. #define SPDP double
  170. #define Precision "Double"
  171. #else
  172. #define SPDP float
  173. #define Precision "Single"
  174. #endif
  175. //#define opt "Opt 3 64 Bit"
  176. void whetstones(long xtra, long x100, int calibrate);
  177. void pa(SPDP e[4], SPDP t, SPDP t2);
  178. void po(SPDP e1[4], long j, long k, long l);
  179. void p3(SPDP *x, SPDP *y, SPDP *z, SPDP t, SPDP t1, SPDP t2);
  180. void pout(char* title, float ops, int type, SPDP checknum,
  181. SPDP time, int calibrate, int section);
  182. static SPDP loop_time[9];
  183. static SPDP loop_mops[9];
  184. static SPDP loop_mflops[9];
  185. static SPDP TimeUsed;
  186. static SPDP mwips;
  187. static char headings[9][18];
  188. static SPDP Check;
  189. static SPDP results[9];
  190. #include "rtthread.h"
  191. doubletheseSecs = 0.0;
  192. doublestartSecs = 0.0;
  193. doublesecs;
  194. int millisecs = 0;
  195. void start_time()
  196. {
  197. startSecs = rt_tick_get()*1.0/RT_TICK_PER_SECOND;
  198. return;
  199. }
  200. void end_time()
  201. {
  202. secs = rt_tick_get()*1.0/RT_TICK_PER_SECOND - startSecs;
  203. millisecs = (int)(1000.0 * secs);
  204. return;
  205. }
  206. int whetstone_main(int argc, char *argv[])
  207. {
  208. int count = 10, calibrate = 1;
  209. long xtra = 1;
  210. int section;
  211. long x100 = 100;
  212. int duration = 10;
  213. ///FILE *outfile;
  214. char compiler[80], options[256], general[10][80] = {" "};
  215. char endit[80];
  216. int i;
  217. int nopause = 1;
  218. if (argc > 1)
  219. {
  220. switch (argv[1][0])
  221. {
  222. case 'N':
  223. nopause = 0;
  224. break;
  225. case 'n':
  226. nopause = 0;
  227. break;
  228. }
  229. }
  230. //getDetails();
  231. //for (i=1; i<10; i++)
  232. //{
  233. // rt_kprintf("%sn", configdata[i]);
  234. //}
  235. ///local_time();
  236. ///rt_kprintf("n");
  237. ///rt_kprintf("##########################################n");
  238. ///rt_kprintf("%s Precision C Whetstone Benchmark %s, %sn", Precision, opt, timeday);
  239. ///outfile = fopen("whets.txt","a+");
  240. ///if (outfile == NULL)
  241. ///{
  242. /// rt_kprintf ("Cannot open results file nn");
  243. /// rt_kprintf("Press Enter to exitn");
  244. /// i = getchar();
  245. ///
  246. /// exit (0);
  247. ///}
  248. rt_kprintf("Calibraten");
  249. do
  250. {
  251. TimeUsed=0;
  252. whetstones(xtra,x100,calibrate);
  253. rt_kprintf("%8d mS %8d Passes (x 100)n",(int)(TimeUsed*1000),xtra);
  254. calibrate++;
  255. count--;
  256. if (TimeUsed > 2.0)
  257. {
  258. count = 0;
  259. }
  260. else
  261. {
  262. xtra = xtra * 5;
  263. }
  264. }
  265. while (count > 0);
  266. if (TimeUsed > 0) xtra = (long)((SPDP)(duration * xtra) / TimeUsed);
  267. if (xtra < 1) xtra = 1;
  268. calibrate = 0;
  269. rt_kprintf("nUse %dpasses (x 100)n", (int)xtra);
  270. rt_kprintf("n %s Precision C/C++ Whetstone Benchmark",Precision);
  271. #ifdef PRECOMP
  272. rt_kprintf("n Compiler%s", precompiler);
  273. rt_kprintf("n Options %sn", preoptions);
  274. #else
  275. rt_kprintf("n");
  276. #endif
  277. rt_kprintf("nLoop content Result MFLOPS "
  278. " MOPS msnn");
  279. TimeUsed=0;
  280. whetstones(xtra,x100,calibrate);
  281. rt_kprintf("nMWIPS ");
  282. if (TimeUsed>0)
  283. {
  284. mwips=(float)(xtra) * (float)(x100) / (10 * TimeUsed);
  285. }
  286. else
  287. {
  288. mwips = 0;
  289. }
  290. rt_kprintf(" %13d%13dnn",(int)(mwips*1000),(int)(TimeUsed*1000));
  291. if (Check == 0) rt_kprintf("Wrong answer");
  292. /************************************************************************/
  293. /* Add results to output file whets.txt */
  294. /************************************************************************/
  295. ///rt_kprintf( "n");
  296. ///rt_kprintf( "##############################################nn");
  297. ///for (i=1; i<10; i++)
  298. ///{
  299. /// frt_kprintf(outfile, "%s n", configdata[i]);
  300. ///}
  301. ///rt_kprintf( "n");
  302. ///rt_kprintf( "##############################################nn");
  303. ///rt_kprintf( "Whetstone %s Precision C Benchmark%s, %sn",Precision, opt, timeday);
  304. ///rt_kprintf( "n");
  305. //rt_kprintf("Loop content Result"
  306. // " MFLOPS MOPS Secondsnn");
  307. //for (section=1; section<9; section++)
  308. // {
  309. // rt_kprintf( "%s%24.17f ", headings[section],
  310. // results[section]);
  311. // if (loop_mops[section] == 99999)
  312. // {
  313. // rt_kprintf("%9.3f %9.3fn",
  314. // loop_mflops[section], loop_time[section]);
  315. // }
  316. // else
  317. // {
  318. // rt_kprintf( " %9.3f %9.3fn",
  319. // loop_mops[section], loop_time[section], results[section]);
  320. // }
  321. //}
  322. //fflush(outfile);
  323. //rt_kprintf( "nMWIPS ");
  324. //rt_kprintf( "%9.3f%9.3fnn",mwips,TimeUsed);
  325. // rt_kprintf( "Resultstoloadtospreadsheet ");
  326. // rt_kprintf( " MWIPS Mflops1 Mflops2 Mflops3 Cosmops"
  327. // " ExpmopsFixpmops Ifmops Eqmopsn");
  328. //rt_kprintf( "Resultstoloadtospreadsheet ");
  329. // rt_kprintf( " %9.3f %9.3f %9.3f", mwips, loop_mflops[1],
  330. // loop_mflops[2]);
  331. // rt_kprintf( " %9.3f %9.3f %9.3f", loop_mflops[6],
  332. // loop_mops[5], loop_mops[8]);
  333. //rt_kprintf( " %9.3f %9.3f %9.3fnn", loop_mops[4],
  334. // loop_mops[3], loop_mops[7]);
  335. ///fflush(outfile);
  336. ///fclose (outfile);
  337. ///rt_kprintf ("n");
  338. ///rt_kprintf ("A new results file, whets.txt,will have been created in the samen");
  339. ///rt_kprintf ("directory as the .EXE files, if one did not already exist.nn");
  340. if (nopause)
  341. {
  342. rt_kprintf(" Press Enternn");
  343. i = getchar();
  344. }
  345. return 0;
  346. }
  347. void whetstones(long xtra, long x100, int calibrate)
  348. {
  349. long n1,n2,n3,n4,n5,n6,n7,n8,i,ix,n1mult;
  350. SPDP x,y,z;
  351. long j,k,l;
  352. SPDP e1[4];
  353. SPDP t =0.49999975;
  354. SPDP t0 = t;
  355. SPDP t1 = 0.50000025;
  356. SPDP t2 = 2.0;
  357. Check=0.0;
  358. n1 = 12*x100;
  359. n2 = 14*x100;
  360. n3 = 345*x100;
  361. n4 = 210*x100;
  362. n5 = 32*x100;
  363. n6 = 899*x100;
  364. n7 = 616*x100;
  365. n8 = 93*x100;
  366. n1mult = 10;
  367. /* Section 1, Array elements */
  368. e1[0] = 1.0;
  369. e1[1] = -1.0;
  370. e1[2] = -1.0;
  371. e1[3] = -1.0;
  372. start_time();
  373. {
  374. for (ix=0; ix;>
  375. {
  376. for(i=0; i*n1mult;>
  377. {
  378. e1[0] = (e1[0] + e1[1] + e1[2] - e1[3]) * t;
  379. e1[1] = (e1[0] + e1[1] - e1[2] + e1[3]) * t;
  380. e1[2] = (e1[0] - e1[1] + e1[2] + e1[3]) * t;
  381. e1[3] = (-e1[0] + e1[1] + e1[2] + e1[3]) * t;
  382. }
  383. t = 1.0 - t;
  384. }
  385. t =t0;
  386. }
  387. end_time();
  388. secs = secs/(SPDP)(n1mult);
  389. pout("N1 floating point",(float)(n1*16)*(float)(xtra),
  390. 1,e1[3],secs,calibrate,1);
  391. /* Section 2, Array as parameter */
  392. start_time();
  393. {
  394. for (ix=0; ix;>
  395. {
  396. for(i=0; i;>
  397. {
  398. pa(e1,t,t2);
  399. }
  400. t = 1.0 - t;
  401. }
  402. t =t0;
  403. }
  404. end_time();
  405. pout("N2 floating point",(float)(n2*96)*(float)(xtra),
  406. 1,e1[3],secs,calibrate,2);
  407. /* Section 3, Conditional jumps */
  408. j = 1;
  409. start_time();
  410. {
  411. for (ix=0; ix;>
  412. {
  413. for(i=0; i;>
  414. {
  415. if(j==1) j = 2;
  416. else j = 3;
  417. if(j>2) j = 0;
  418. else j = 1;
  419. if(j<1)        j = 1;
  420. else j = 0;
  421. }
  422. }
  423. }
  424. end_time();
  425. pout("N3 if then else",(float)(n3*3)*(float)(xtra),
  426. 2,(SPDP)(j),secs,calibrate,3);
  427. /* Section 4, Integer arithmetic */
  428. j = 1;
  429. k = 2;
  430. l = 3;
  431. e1[0] = 0.0;
  432. e1[1] = 0.0;
  433. start_time();
  434. {
  435. for (ix=0; ix;>
  436. {
  437. for(i=0; i;>
  438. {
  439. j = j *(k-j)*(l-k);
  440. k = l * k - (l-j) * k;
  441. l = (l-k) * (k+j);
  442. e1[l-2] = e1[l-2] + j + k + l;
  443. e1[k-2] = e1[k-2] + j * k * l;
  444. //was e1[l-2] = j + k + l; ande1[k-2] = j * k * l;
  445. }
  446. }
  447. }
  448. end_time();
  449. x = (e1[0]+e1[1])/(SPDP)n4/(SPDP)xtra; // was x = e1[0]+e1[1];
  450. pout("N4 fixed point ",(float)(n4*15)*(float)(xtra),
  451. 2,x,secs,calibrate,4);
  452. /* Section 5, Trig functions */
  453. x = 0.5;
  454. y = 0.5;
  455. start_time();
  456. {
  457. for (ix=0; ix;>
  458. {
  459. for(i=1; i;>
  460. {
  461. x = t*atan(t2*sin(x)*cos(x)/(cos(x+y)+cos(x-y)-1.0));
  462. y = t*atan(t2*sin(y)*cos(y)/(cos(x+y)+cos(x-y)-1.0));
  463. }
  464. t = 1.0 - t;
  465. }
  466. t = t0;
  467. }
  468. end_time();
  469. pout("N5 sin,cos etc.",(float)(n5*26)*(float)(xtra),
  470. 2,y,secs,calibrate,5);
  471. /* Section 6, Procedure calls */
  472. x = 1.0;
  473. y = 1.0;
  474. z = 1.0;
  475. start_time();
  476. {
  477. for (ix=0; ix;>
  478. {
  479. for(i=0; i;>
  480. {
  481. p3(&x,&y,&z,t,t1,t2);
  482. }
  483. }
  484. }
  485. end_time();
  486. pout("N6 floating point",(float)(n6*6)*(float)(xtra),
  487. 1,z,secs,calibrate,6);
  488. /* Section 7, Array refrences */
  489. j = 0;
  490. k = 1;
  491. l = 2;
  492. e1[0] = 1.0;
  493. e1[1] = 2.0;
  494. e1[2] = 3.0;
  495. start_time();
  496. {
  497. for (ix=0; ix;>
  498. {
  499. for(i=0;i;i++)
  500. {
  501. po(e1,j,k,l);
  502. }
  503. }
  504. }
  505. end_time();
  506. pout("N7 assignments ",(float)(n7*3)*(float)(xtra),
  507. 2,e1[2],secs,calibrate,7);
  508. /* Section 8, Standard functions */
  509. x = 0.75;
  510. start_time();
  511. {
  512. for (ix=0; ix;>
  513. {
  514. for(i=0; i;>
  515. {
  516. x = sqrt(exp(log(x)/t1));
  517. }
  518. }
  519. }
  520. end_time();
  521. pout("N8 exp,sqrt etc. ",(float)(n8*4)*(float)(xtra),
  522. 2,x,secs,calibrate,8);
  523. return;
  524. }
  525. void pa(SPDP e[4], SPDP t, SPDP t2)
  526. {
  527. long j;
  528. for(j=0;j<6;j++)
  529. {
  530. e[0] = (e[0]+e[1]+e[2]-e[3])*t;
  531. e[1] = (e[0]+e[1]-e[2]+e[3])*t;
  532. e[2] = (e[0]-e[1]+e[2]+e[3])*t;
  533. e[3] = (-e[0]+e[1]+e[2]+e[3])/t2;
  534. }
  535. return;
  536. }
  537. void po(SPDP e1[4], long j, long k, long l)
  538. {
  539. e1[j] = e1[k];
  540. e1[k] = e1[l];
  541. e1[l] = e1[j];
  542. return;
  543. }
  544. void p3(SPDP *x, SPDP *y, SPDP *z, SPDP t, SPDP t1, SPDP t2)
  545. {
  546. *x = *y;
  547. *y = *z;
  548. *x = t * (*x + *y);
  549. *y = t1 * (*x + *y);
  550. *z = (*x + *y)/t2;
  551. return;
  552. }
  553. void pout(char* title, float ops, int type, SPDP checknum,
  554. SPDP time, int calibrate, int section)
  555. {
  556. SPDP mops,mflops;
  557. Check = Check + checknum;
  558. loop_time[section] = time;
  559. strcpy (headings[section],title);
  560. TimeUsed =TimeUsed + time;
  561. if (calibrate == 1)
  562. {
  563. results[section] = checknum;
  564. }
  565. if (calibrate == 0)
  566. {
  567. rt_kprintf("%s %13d ",headings[section],(int)(results[section]*1000));
  568. if (type == 1)
  569. {
  570. if (time>0)
  571. {
  572. mflops = ops/(1000000L*time);
  573. }
  574. else
  575. {
  576. mflops = 0;
  577. }
  578. loop_mops[section] = 99999;
  579. loop_mflops[section] = mflops;
  580. rt_kprintf(" %13d %13dn",
  581. (int)(loop_mflops[section]*1000), (int)(loop_time[section]*1000));
  582. }
  583. else
  584. {
  585. if (time>0)
  586. {
  587. mops = ops/(1000000L*time);
  588. }
  589. else
  590. {
  591. mops = 0;
  592. }
  593. loop_mops[section] = mops;
  594. loop_mflops[section] = 0;
  595. rt_kprintf(" %13d%13dn",
  596. (int)(loop_mops[section]), (int)(loop_time[section]*1000));
  597. }
  598. }
  599. return;
  600. }
复制代码

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16952

    浏览量

    350122
  • 先楫半导体
    +关注

    关注

    10

    文章

    214

    浏览量

    2058
收藏 人收藏

    评论

    相关推荐

    半导体hpm_apps v1.6.0上线

    半导体hpm_apps v1.6.0上线
    的头像 发表于 08-02 08:18 601次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>半导体</b><b class='flag-5'>hpm</b>_apps v1.6.0上线

    有奖提问!半导体HPM6E00系列新品发布会!!

    半导体HPM6E00新品预览”的活动,盛况空前。 自此之后一直收到大家的信息,问什么时候能够买到HPM6E00,这不,我们来了~
    发表于 06-20 11:45

    半导体所有开发已上RT-Thread主线啦

    目前,半导体在RT-Thread主线支持的开发包含以下这些
    的头像 发表于 06-05 08:17 498次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>半导体</b>所有开发<b class='flag-5'>板</b>已上RT-Thread主线啦

    半导体 hpm_sdk v1.5.0 正式发布

    半导体 hpm_sdk v1.5.0 正式发布
    的头像 发表于 04-12 08:17 513次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>半导体</b> <b class='flag-5'>hpm</b>_sdk v1.5.0 正式发布

    半导体 hpm_sdk v1.5.0 正式发布

    半导体 hpm_sdk v1.5.0 正式发布!功能升级更强大 版本更新概况 新支持的IDE IAR Embedded Workbench for RISC-V (
    发表于 04-08 11:14

    半导体携手立功科技推出了国产高性能微控制器HPM6800系列

    上海半导体科技有限公司(半导体,HPMicro)推出了国产高
    的头像 发表于 03-13 12:24 788次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>半导体</b>携手立功科技推出了国产高<b class='flag-5'>性能</b>微控制器<b class='flag-5'>HPM</b>6800系列

    HPM5361EVK开发,网友测评效果(二)

    上海半导体举办的HPM5361EVK开发试用活动圆满结束,广大工程师和爱好者们踊跃参与此次
    的头像 发表于 03-12 08:16 1721次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>HPM</b>5361EVK开发<b class='flag-5'>板</b>,网友测评效果(二)

    半导体推出了国产高性能微控制器HPM6800系列

    上海半导体科技有限公司(半导体,HPMicro)推出了国产高
    的头像 发表于 03-07 12:30 1184次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>半导体</b>推出了国产高<b class='flag-5'>性能</b>微控制器<b class='flag-5'>HPM</b>6800系列

    半导体HPM5300EVK开发试用作品手册免费下载

    产品介绍: HPM5300系列MCU是上海半导体推出的一款高性能RISC-V内核通用微控制器。
    发表于 12-28 10:25

    HPM5361EVK开发试用体验】HPM5361EVK开发初体验

    HPM5361EVK是基于HPM5300系列高性能RISC-V内核MCU的一款开发。支
    发表于 12-24 22:58

    HPM5361EVK开发试用体验】认识和了解HPM5361EVK开发

    近日,收到了HPM5361EVK开发开发,带大家了解和认识一下
    发表于 12-24 22:39

    HPM5361EVK开发试用体验】-- HPM5361初体验

    HPM5361EVK开发试用体验】-- HPM5361初体验
    发表于 12-11 10:27

    HPM5361EVK开发试用体验】coremark测试HPM5361EVK性能

    感谢电子发烧友的工作人员发放的HPM5361EVK开发, Windows环境下安装SEGGER Embedded Studio 半导体
    发表于 12-07 09:23

    HPM5361EVK开发试用体验】-- HPM5361初体验

    cortex-m7级别的芯片国产一直有传说未见身影,奈何只能接受国外品牌漫长的交期和一次次的涨价。 有幸大概在2022年意外接触到了半导体HPM6750,看到了价格和
    发表于 11-29 11:26

    HPM5361EVK开发试用体验】1上手HPM5361

    在本地存储更多的指令和数据,而不必依赖外部存储器,从而极大地提高了性能。 开发工具安装:上海半导体提供了HPM系列SoC底层驱动软件包,
    发表于 11-28 12:18