Wen Wu's notes

technical record


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

dBx 是什么?

发表于 2022-11-13 更新于 2022-11-15 分类于 基础知识 阅读次数: 评论数:

由于工作关系,经常遇到dBm,dBu,dBv等等这样的单位,我们姑且统称为dBx,
dB是desibel(分贝)的缩写,表达的是一个相对于基准数据的一个倍数,是用一个合理数字表达超级大或超级小的数字的一个直观单位。它并不能直接用来描述一个物理量的大小或者多少,它表示的是两个相同单位物理量的比值。经常用来描述声音大小,信号强弱,信噪比等。
这个比值中,作为分母的这个量是基准值,分贝描述的就是作为分子的物理量相对于这个基准值的大小,分贝的计算公式如下:

$dB = 10 \times log_{10}(\frac {value} {value_{ref}})$

其中 ${value}_{ref}$是基准值,基准值用分贝表示的话是0dB。

dB用来表示声音的时候有如下几个分类。

声音类型1 声音类型2 单位 说明
自然界声音 N/A dBSPL 以20uP($2 \times 10^{-5}$ Pa为基准的一个倍数)
电信号 模拟 dBm 以声音信号的功率为被测量,1毫瓦(1mW)作为基准值
电信号 模拟 dBu 以电压为测量量计算声音的分贝值,基准电压为0.775v,$P=\frac {V^2} R$ P是1mW,R为600欧姆时,得出的电压为0.775V
电信号 模拟 dBv 以电压为被测量,选择1V作为基准值
电信号 数字 dBFS dBFS的全称为Decibels Full Scale,全分贝刻度,是音频的数字表示方法,也就是说0dBFS是数字设备能达到的最大值,除了最大值外其他都是负值。

因果关系

发表于 2022-11-13 分类于 因果关系 阅读次数: 评论数:

朱迪亚珀尔老爷子认为现代正火着的基于统计学的人工智能是没有希望通过图灵测试的,只有算法会做反事实推理,会因果关系才有可能,才是强人工智能的基础。所谓反事实推理,就是“如果不做什么,事情会是什么?”这样的反问,这样的推理。到目前为止还没有这样的人工智能。作者认为这个推理的理论基础要靠一门新的学科”因果关系“,他干脆出了一本书来推广这个理论,这本书叫《为什么》。

在《为什么》一书中,他赤裸裸的嘲笑了统计学的多位大师,并列出很多单纯从统计学思考问题而引出的笑话,比如著名的辛普森悖论等等。

其中作者对变量之间的伪相关关系做了一个总结,受益匪浅。对我平时处理不确定性高的问题挺有帮助。比如耳机的蓝牙连线不稳定,播放声音有杂音等等的问题的处理,我们需要设计实验做各种验证,寻找因变量和问题之间的因果关系,而这些变量到底该不该控制是大有学问的,控制错了的话,很可能得出一个错误的结论你还不知道,作者针对变量之间的结合关系总结了三种,这里记录下。

  1. 链结合:A—>B—>C,比如 火灾—>烟雾—>报警

是烟雾引起了报警,实际上火灾跟报警没有关系。

  1. 叉结合:A<—B—>C,比如:鞋子尺码<—孩子年龄—>阅读能力

如果你发现鞋码大的孩子,阅读能力强,你就认为脚大的孩子聪明,那你搞错了因果关系,实际上真正的原因是跟孩子年龄有关,年龄大了,脑量后了才有可能阅读能力强。

  1. 对撞结合:A—>B<—C,比如:长得帅—>明星<—演技好

如果你认为长得帅跟演技好是相关的,那也是有问题的。长的帅可以当明星,演技好可以当明星,但长得帅跟演技好之间没关系。

所以我们在设计实验的时候,要提前思考过控制变量之间是否条件独立,否则要花费很多时间绕在虚假关系中。

比如分析噪音问题,需要先要搞清楚整个音频线路上有哪些部分,然后确认针对这些部分可以做哪些操作,最后找到是那个变量引起了最终的噪音。比如音源就有可能有噪音,那你一直控制“音频处理算法”这个变量就是错误的,你可能开开关关了一大堆DSP算法,绕在这个虚假关系中,浪费大量时间。

flowchart LR
  Setting[软件配置]-->2822DAC[数模转换]
  Buck[芯片内干扰]-->2822DAC
  2822DAC-->Wired[音频线材]-->Noise[接收端噪音]
  2822DAC-->Noise
  Source[音源]-->DspLib
  Source-->Noise
  DspLib[音频处理算法]-->Stream[音频数据流]
  Stream-->Noise

跑步与大脑

发表于 2022-07-17 分类于 思考 阅读次数: 评论数:

自从迷上跑步以来,我想尽各种办法让跑步变的有趣。比如周末到公司隔壁菁蓉中心绕圈跑,一圈大概600m,逆时针跑20圈,做旋风一样的男子。再就是到第二绕城的锦江绿道跑LSD(长途拉练),看人潮人海,处处公园,但终究这些跑步行为都得分解到一步一步的脚踏实地,一步步的单调无聊和痛苦。平日里在跑步机上跑步的时候,更容易感受到,我是想了很多的办法 去消除无聊的重复运动。

  • 最开始是听着音乐跑,节奏明快的《Runaway Baby》《丝路的随想》,霸气的《Battle without Hornor and humanity》、《钢铁洪流进行曲》、《helmet to Helmet》、《Advancing the Troops》都非常的振奋人心,跑到停不下来,跑出一身汗非常的爽快。慢慢的我又开始寻找平和一点的音乐《Moment of peace》,这个音乐非常的平和,但是节奏又不慢,非常舒坦,有一种空灵深邃的感觉。不过我慢慢发现听着音乐跑步虽然跑步有趣了,可是经常会弄伤腿脚,似乎是大脑不够同时享受音乐和跑步,控制腿脚的区域和听觉的区域在争夺大脑处理器的时候似乎时有冲突。
  • 于是我开始关掉音乐跑步,这下把注意力集中到脚下,关注每一次呼吸。到速度提到10km后,保持步频180,两步一呼,两步一吸,保证每步都全脚掌落地,把重心滚到前脚掌的趾球上,重心落地时保持腿部弯曲,体会大腿肌肉承重的感觉,慢慢的终于能适应了,5km/10km/20km似乎都没有疼痛的感觉,而且慢慢有了多余的脑力去想其他的东西。
  • 在家里跑步机跑步时我开始盯着窗外公园的树林看,观察树头的高低胖瘦,观察乔装成大树的通信基站。慢慢地经常会看到戴帽子戴眼镜的kitty猫的正面,大猩猩的侧面,躺着的狗狗等等,似乎大脑进入了一个入定的状态,非常的平静,一切其他的事情都不在了,我只听到自己呼呼喘气和脚底下每次落脚时肌肉的抖动,有时回过神来,又会稍稍感到一点无聊。
    我就开始数一数到底跑了多少步,以一千为单位,我发现数好数字真的非常难。
  1. 第一次我从1开始数,1,2,3…9.10,,,,29,,99,100我发现要数到300已经非常的难了。当数完一个10的时候,经常不知道下一个是几十,当数到99的时候,经常不知道下一个是几百。非常的混乱,在跑步的时候,大脑没有太多的脑力去专注于这些数字计算,毕竟跑步还是安全第一,大脑自然地会选择服务跑步为第一优先级,才不会管什么数数字。
  2. 那我想办法减轻脑力负担,尝试按照我熟悉的8拍来数。我喜欢8这个数法,跳舞的时候全靠这个8拍来让重复无聊的动作变成有聊有趣有尽头的不单调行为。我数10个8拍是80个,数5次10个8拍是400。我用左手指头记录是第几个400,用右手指头记录是第几次10个八拍,每次右手指头数完一轮,左手指就弯下对应编号的指头,这样数完一把左手刚好2000步,这个方法居然非常管用,跟跑步机数的步数几本能对上。但很快我发现在我提高跑步机速度到11km/h的时候,这个方法又不行了 ,脑力跟不上,经常忘了搬手指头,或者是数不到第10个8拍就又开始从头数了,似乎大脑里有一个牢笼,力气不够,怎么都破不开。
  3. 我继续改变策略,我把8拍减到4拍,10个4拍是40步,5次10个4拍是200步,还是左手记录第几个200,右手记录是第几轮10个4拍。这样跑完一把左手是1000步,这个方法在这个速度数个几千步还OK,家里跑步机不能再提速了,再提速就声音太大,吵到老婆了。

    看到过一则记录说云南有个探险家叫金飞豹,曾经100天连续跑100个马拉松,这真是太牛了。
    大脑到底是按照什么原则来分配资源给各个功能的,如何排优先级?真是很有意思。

卡特教练

发表于 2022-04-06 更新于 2022-04-10 分类于 管理 阅读次数: 评论数:

有的人步伐与众不同,是因为他们听到了远方的鼓声。——梭罗《瓦尔登湖》

如果你能遇到一位“有的人”,那你一定三生有幸,而卡特教练就是这样一位“有的人”。

《卡特教练》是根据真人真事改编的美国版的《放牛班的春天》,教练Ken Carter不只带领一支很烂的高中篮球队取得辉煌的战绩,还把队员们送到大学,打破了Richmond高中的升学记录。这就好比做领导,能让自己的下属能绽放光芒,带领他们到他们未曾想过的地方,才是真正一个优秀管理者该做的事情【姜海舟,2022】。

主角Ken Carter 是一位黑人,光头,目光坚定,内心澄明,有一个温柔的妻子和一个帅气的儿子。看起来他是个成功人士,开奔驰300,还有一个卖体育用品的商店,生活富足。一天他送完娃上学,顺路去Richmond高中看望老友,老友执教校篮球队,快要退休了,对如何管教这帮青春期荷尔蒙爆棚的毛孩子是心有余而力不足,看得出他非常的仰慕Ken Carter,希望Cartner能来接替他执教球队,Carter欣然接受。Carter对执教球队很有套路,总结起来有三大原则:规章制度铁血执行、关键时刻指点迷津、实时鼓励。
Carter上任后先约法三章,与小球员们签一个协议,这个举动看起来小题大作的事儿,但非常的高瞻远瞩,对他的成事起了决定性的作用。协议规定团队的所有孩子们必须做到如下几点,团队才能继续打球。

  1. 3点开练,2:55就算迟到,并规定迟到的处罚:500个俯卧层,1000个摸线跑。迟到越多,罚的越多。
  2. 上文化课不可缺席,而且必须坐最前排。
  3. 学分要达到2.3分。
  4. 代表球队时穿西服打领带。

从这个协议看,他要球员们学习上也要做好,不只是为了打球而打球,他说在他的球队打球是一种特权,要想享受特权就要先把该做的做好。#1 是为了团队整体的利益;#2 和#3 则是为了学生们的未来;#4有点奇怪,可能更多的是心理上的一个作用,让他们对打球这个事儿当回事儿,是一份值得尊重的事业。
还有很多教小孩做人的细节就太多了,都是口头宣布,没有写到协议里的,比如

  • 不许与教练顶嘴,否则就受罚。其中明星球员似乎很看不服carter,还跟他动手。他就让这个球员离开,另外一个球员说你看你把队伍主要的得分手赶跑了,Cartter看起来一点不惧,说“那你们都有机会成为主要得分手呀”。对于这种恃才放狂的“野狗”型队员,越早开除越好。
  • 与教练之间要相互尊称“Sir”。
  • 不许说“Negro”,Nego是侮辱黑人先辈的说法。
  • 不允许语言上侮辱对手,要尊重对手。

规章制度铁血执行

在协议的执行力度上是绝对严格的,没有任何商量的余地。

  1. 他的亲儿子也在球队,第一天来报道时因为入学手续多,迟到了5分钟,那也一样罚。
  2. 最有才华的cruze因为耍脾气顶嘴离开球队,后来又想回来,那必须把欠下的所有处罚补上。
  3. 体能训练:投篮、防守、带球、配合、长跑短跑基本功样样必须达标。
  4. 考试不及格,上课缺席,那整个球队必须停赛,把球馆锁上。这条在执行上的阻力最大,遇到了几乎所有人的反对,从小球员们到校长,再到家长。尤其是家长,他们觉得有个地方给孩子打球赢得自信最重要,不打球他们没事做就去街区鬼混是绝对不行的,家长们居然没想到过孩子们没球打可以去上课学习啊。最后Carter被家长们告到校董事会,由校董事会投票决定是否要开馆继续训练。在双方激辩的时候他说出了自己的真心话:他自己30年前从Richmond高中毕业,这么多年来这个学校一直没变过,能按时毕业的人不到一半,能入大学的寥寥无几,很多同学去了监狱,是时候要做改变了,他要改变孩子们的命运,改变Richmond高中的命运。他说孩子们已经与他签了协议,如果不遵守这个协议,那就相当于法律可以随意破坏,那社会岂不乱套了。但没办法,这些人的认知高度还不到这个层次,最后校董投票 4:2决定开馆训练。carter说这个结果他不接受,他要辞职,他就真的就辞职了。当他失落地像电视里常见的那些被fire的员工一样,抱着自己的文件盒路过球馆的时候,他依依不舍地进去看了下,结果他大为意外和感动。他看到整整齐齐的两排桌子,毛孩子们正在那里努力学习,孩子们终于明白了他的苦衷,坚定的站在他这边,即使开馆也不练球。那个时候的心情真是无法描述,是他乡遇知音的激动,是在风雨飘摇的大海中苦苦觅得海岸时的安宁,从这一刻起他的灵魂不在孤独,他们将无往不胜。

关键时刻指点迷津

在球队比赛时,他充分展示自己过硬的业务能力,总是能看到问题的关键,实时地指挥小球员们跑位,一次次带领球队赢得荣耀,赢得尊重。针对不同队员给的指导也是不一样的,对于后卫大个子,他就一句话,你做好自己就行。对于儿子就是摸摸头给予鼓励。

在争夺州冠军的时候,团队遇到了空前的压力,节奏完全被对手带的团团转,孩子们压力巨大,在中场休息时一个个满头大汗,大口喘气,眼神迷离,不知道该怎么办,从没遇到过这么厉害的对手。carter说你们怎么回事,完全被对方的节奏带着走,打出我们的节奏,对方已经在悬崖边上了,我们推一把就解决问题。然后对球员一个一个叮嘱,把他们平时的打法都念一遍,树立他们的信心,最后他们真的重建自信,打尽最后一口力气,但对手实在太过强大,最终还是以一分之差惜败。

实时鼓励

战败后,球员们灰心的回到休息室,大家面色凝重,低垂脑壳,在想这次输球了,不知道教练会怎么来批评他们。carter知道这个时候他们已经拼尽了最后的力气,已经是最好的结果,就毫不吝啬的夸奖他们就是他心中的冠军球队,以他们为荣。最后他们一起喊口号:Rich What?Richmond。为大家重新树立信心,正视失败,接受失败。最后团队里有四个人上了名校,突破了richmond高中的历史。

想起另外一部绝佳的同类题材《伟大辩手》一样,面对青春期正负能量到处游走的孩子们的顽皮,无助与彷惶,他们最需要的也许只是一个坚定的眼神。

人性的枷锁

发表于 2022-02-05 分类于 阅读 阅读次数: 评论数:

读完毛姆的《人性的枷锁》,也跟着过完了菲利普的跌宕起伏的前30年。他天生是个瘸子,自小敏感内向,父母双亡,寄养在伯父家。打小的时候天天睡前祈祷希望自己的跛脚可以第二天被上帝修好,但奇迹一直没有出现,慢慢的他不信上帝了,他认为自己丢掉了信仰这个枷锁。之后他放开了自己,他到德国学文学,到伦敦学会计,到巴黎学画画,最为精彩的就是他遇到那些个才华横溢,活色生香的人儿,他自己的个性和世界观也慢慢的成熟,由简单的崇拜别人变得能客观的评价别人及自己,最后他发现自己在画画方面没有天赋时,就果断转去学医,并最终学有所成。其中最为揪心的就是他跟米尔德里德的感情,这个蛇蝎心肠的女人害他一次次几乎破产,掉入人生的低谷,差点还因为没钱活下去而自杀,还好他没有跟这个糟心女人走在一起。最后结局也算圆满,他读完了医学,选择了好友阿西尔内的大女儿萨利,平平凡凡的过日子,只要待在萨莉旁边,他就能安静祥和下来。

如果你对自己的处境总是心存不满,企图反抗,那只会给你带来更深的羞耻。你的悲惨遭遇只是上帝让你背上的十字架,而之所以选择你来负担,是因为你的肩膀比其他人更强壮。这是上帝的好意,你应该了在其中,不能把它视作悲伤的源头。

每个昨日都在为明日做打算,而近日就这样白白付诸东流。

眼前的未来空空旷旷,冷冷凄凄。他像一个绝望的水手,在浩瀚无边的大洋上漂泊多年,经历了风雨险难,忍受了饥寒交迫,终于觅得一片平静的港口但他正要驶入时,却刮来一阵疾风把他再一次吹进浩淼的大海,他一门心思地惦记着陆地上草坪柔软,树丛茂密,而那动荡苍茫的大海却只让他苦不堪言。他不能再做一个孤零零的漂泊者了。

麻雀

发表于 2021-10-24 更新于 2021-10-30 分类于 随笔 阅读次数: 评论数:

我飞翔在乌云之中,你看着我无动于衷,有多少次波涛汹涌,在我,胸中…

在《麻雀》中李荣浩是这么为一只“有明天”的麻雀呐喊的。

      关于麻雀,我感受最深了。在老家的窑洞斜上方有一颗巨大无比枝桠张扬的榆树,年龄不详,树冠直径估计有十几米,据说这棵非比寻常的老榆树上住着一位神仙,从对面山坡看它,是亮着灯的,就像一户人家。树的前方地面有四棵长的高高直直的榆树算是它配角,说是神仙回家的天梯。树根正下方的土坡上有很多的小洞,里面住了非常多瘦瘦的灰溜溜的麻雀,他们是我打小的玩伴。我最喜在吃完饭后到院子里用我心爱的弹弓吓唬他们,尤其在在他们吵的很厉害的时候,我弹一下,马上就会安静那么几十秒,像是时间停止一样,彷佛他们受我的掌控,很有成就感。每年我都会抓几只小麻雀来养着。其中有一只麻雀印象特别深,是我在舅舅家走亲戚的时候,大表姐在院子里捡到的,她看我非常喜欢就送我了。这只麻雀跟我的关系非常好,长大后他会自己飞出去找吃的,吃饱了再飞回来,落在我的肩膀或手指上扭来扭去,叽叽咋咋的叫 ,好像在跟我聊天,但是很无奈我不通麻雀语,无法感知到他在说什么,是不是它以为我是一只大点的麻雀,而且脑袋蠢蠢、无动于衷地不知道它讲什么。不过不知从哪天开始它再没有回来过,也许是遭遇了什么不测,或是他找到了自己的天地忘记了我。没等到他回来我伤心了好久。
      后来,我在网上看到一篇林锐博士的《大学十年》,看了后非常热血。不过文中我印象最深的不是作者的传奇,而是他在文中提到的西安的麻雀,哈哈,我很想去看看。

那麻雀滚圆滚圆的,简直是会飞的肉弹。它们不怕人,成堆聚集吵闹,常让我误以为是没有教养的一群鸡。

      最近无意中发现作者现在开了一个公司叫漫索,产品是IT企业的信息管理系统,他还是挺喜欢写东西分享的,也出了不少书,于是翻到一本《研发企业管理》,书中他引用的孔子对人的学习境界的总结,读来非常有感触。

  • 不学而知:不用学习也能会,这些人不是不学习,而是他们的传感器非常的敏锐,领悟力强,触类旁通的能力非常厉害。
  • 学而知:通过学习然后会了,这个是我们大部分人的学习方法,通过花费一定的时间掌握了知识然后会了。
  • 困而知:学习完了还不会,等犯错误之后才能理解深刻,才能会。
  • 困而不知:学习完了,犯了错误了还是不会,这种就有点不可救药了。

      对于企业来说主要是找学而知和困而知的人,学一学,犯犯错误理解深刻了,就可以开始干活儿,慢慢积累个几年。公司找来的每个同仁,能独立生存,他们都是有比较优势的,我们只要用好他们,就一定能场照不菲的价值。

吃货的鄙视链

发表于 2021-06-09 分类于 随笔 阅读次数: 评论数:

《Beyond Feelings》中介绍不同的环境下人的想法不同时,引入了社会学家Ian Robertson总结的全球饮食差异,写的很有意思,居然写出了单向链表的感觉。

Americans eat oysters but not snails. 美国人吃牡蛎,不是蜗牛。
The French eat snails but not locusts. 法国人吃蜗牛,不吃蝗虫。
The Zulus eat locusts but not fish. 祖鲁人吃蝗虫,不吃鱼肉。
The Jews eat fish but not pork. 犹太人吃鱼肉,不吃猪肉。
The Hindus eat pork but not beef. 印度人吃猪肉,不吃牛肉。
The Russians eat beef but not snakes. 俄国人吃牛肉,不吃蛇肉。
The Chinese eat snakes but not people. 中国人吃蛇肉,不吃人肉。
The Jale of New Guinea find people delicious. 新几内亚人认为人肉鲜美。(这个狠)

Alice和Bob

发表于 2021-05-09 更新于 2021-07-31 分类于 Bluetooth 阅读次数: 评论数:

    读初中时,英语课本里有一对儿明星CP李雷和韩梅梅经常跳出来考我们的听力水平,对他们是既爱又恨。在暗号界也有一对儿明星:Alice和Bob,不过他俩可没空跳出来难为学生娃们,他俩有更重要的事情,总是忙着应用各种办法提防第三者Eve、Mallory等破坏他们的联系。关于他俩的传说有很多很多。

    他俩都是70后,都生于1978年。
    两人早早结婚,1983年离婚(时间线有点离谱),他俩不待见对方不见面,但还在一起做生意,不得不经常打打电话发发信息,还有些资金上的往来。有另外两个恨角儿Eve和Mollary多年来一直盯着他俩。Eve生于1988年,喜好偷听(eavesdropper),Mallory出生年月不详,专搞损人又利己的事儿:破坏、篡改Alice和Bob的通信信息或偷梁换柱骗取Alice和Bob的钱财(the man-in-the-middle attacker with malicious intent)。

Although Alice and Bob were invented with no reference to their personality, authors soon began adding colorful descriptions. In 1983, Blum invented a backstory about a troubled relationship between Alice and Bob, writing, “Alice and Bob, recently divorced, mutually distrustful, still do business together. They live on opposite coasts, communicate mainly by telephone, and use their computers to transact business over the telephone.”[8] In 1984, John Gordon delivered his famous[9] “After Dinner Speech” about Alice and Bob, which he imagines to be the first “definitive biography of Alice and Bob.”

  也有传说Bob是股票经纪人(stockholder),Alice经常跟Bob买股票,是投机者(speculator),她自己的财务状况不想被她husband知道。而且Alice和Bob经常讨论的话题是如何逃税(Tax Fraud)等不法行为,所以他俩的讨论也不想让其他人知道,比如Tax Authority,Secret Police等等,有这么厉害的对手,是难上加难,但是Alice不这么认为,她的粉丝们也不不这么认为。
  暗号界的粉丝及英雄们为了保证这对明星的联络正常,可谓绞尽脑汁、前赴后继。这些英雄中最为耀眼的当属 Whitfield Diffie和 Martin Hellman两位大师,他俩在1976年联合发明了不用交换加密的密钥也能正常加密解密的数学方法(Diffie–Hellman key exchange),在将近30年后,他俩获得了2015年度的“图灵奖”—计算机科学界的最高荣耀。

  为了获得被Alice和Bob翻牌Bluetooth的机会,Blueooth SIG也忙前忙后的为他们定义了蓝牙数据的加密规范Security Manager Specification。
 

关于BLE 配对及机密机制,下面一篇大牛JDH的文章写的非常详尽。
BLE安全机制从入门到放弃

参考文献
[1] A History of The World’s Most Famous Cryptographic Couple
[2] Alice_and_Bob
[3] Alice and Bob in Cipherspace
[5] Alice and Bob in Love
[6] The Alice and Bob After Dinner Speech
[7] Bluetooth Core Spec 5.2
[8] The AES-CMAC Algorithm

mynewt(一) 环境配置

发表于 2021-05-03 更新于 2021-05-04 分类于 操作系统 阅读次数: 评论数:

从Nimble了解到Apache的物联网操作系统mynewt,就想把玩一下,不过光是设置一个环境就非常的不容易,到处是坑儿,又找不到地方发问,感觉mynewt在国内根本没有机会。不像rt-thread,既有社区bbs,又有QQ群、微信群,问问题方便的很。

按照安装步骤一步一步操作,到目前还没build pass,先把遇到的问题整理下。

1.提示xcode太旧了,装不了。那我就update下呗,结果在AppStore下载不了,提示说空间不够,但我有40个G的可用空间呀,我就干脆直接删掉xcode,只装个命令行。

1
2
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select —install

2.接着装mynewt。

1
2
$ brew tap JuulLabs-OSS/mynewt
Error: Refusing to untap runtimeco/mynewt because it contains the following installed formulae or casks:mynewt-newt

解决方法:brew untap —force runtimeco/mynewt就可以了

3.update下brew

1
2
3
4
5
Mac01:~ wnnwoo$ brew update
Error: Fetching /usr/local/Homebrew failed!
Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core failed!
Fetching /usr/local/Homebrew/Library/Taps/juullabs-oss/homebrew-mynewt failed!
Fetching /usr/local/Homebrew/Library/Taps/px4/homebrew-px4 failed!

试验了半天,才搞明白因为开启了VPN,不知道跟brew哪根筋冲突了,关掉VPN就OK

4.升级下mynewt的newt

1
2
3
4
5
$ brew upgrade mynewt-newt
.....
fatal: not a git repository (or any of the parent directories): .git
Building newt. This may take a minute...
go: github.com/NickBall/go-aes-key-wrap@v0.0.0-20170929221519-1c3aa3e4dfc5: Get "https://proxy.golang.org/github.com/%21nick%21ball/go-aes-key-wrap/@v/v0.0.0-20170929221519-1c3aa3e4dfc5.mod": dial tcp 172.217.160.113:443: i/o timeout

百度下有网友说是GO被长城给block了,要把GO的代理设置到国内.

go env -w GOPROXY=https://goproxy.cn

但我这里还是不行,看来不是这个问题,来来回回折腾来很久
最后找到个合适的,比较快的VPN,算是解决了这个问题。

1
2
3
4
$ which newt
/usr/local/bin/newt
$ newt version
Apache Newt version: 1.5.0

5.接着装newtmgr。

1
2
3
4
5
Mac01:~ wnnwoo$ brew install mynewt-newtmgr
Updating Homebrew...
Error: Formulae found in multiple taps:
* juullabs-oss/mynewt/mynewt-newtmgr
* runtimeco/mynewt/mynewt-newtmgr

那就去掉一个,用 Mac01:~ wnnwoo$ brew untap runtimeco/mynewt
然后再来一次

1
2
3
4
Mac01:~ wnnwoo$ brew install mynewt-newtmgr
Warning: juullabs-oss/mynewt/mynewt-newtmgr 1.7.0 is already installed, it's just not linked.
To link this version, run:
brew link mynewt-newtmgr

看来已经装上了,只欠link,那就按照提示继续。

1
2
3
4
5
6
7
8
9
Mac01:~ wnnwoo$ brew link mynewt-newtmgr

Linking /usr/local/Cellar/mynewt-newtmgr/1.7.0... 1 symlinks created.
Mac01:~ wnnwoo$ newtmgr

Mac01:~ wnnwoo$ which newtmgr
/usr/local/bin/newtmgr
Mac01:~ wnnwoo$ newtmgr version
Apache Newtmgr 1.7.0

终于搞定了。

6.接着创建project,在当前目录下command newt upgrade,这个project相关的最基础所有软件包都会被拉下来,然后按照文档指示跑下测项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 Mac01:~ wnnwoo$ newt test @apache-mynewt-core/sys/config

...
"_close$UNIX2003", referenced from:
_flash_native_file_open in @apache-mynewt-core_hw_mcu_native.a(hal_flash.o)
_native_sock_close in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
_uart_pty in @apache-mynewt-core_hw_mcu_native.a(hal_uart.o)
_uart_open_dev in @apache-mynewt-core_hw_mcu_native.a(hal_uart.o)
_hal_uart_close in @apache-mynewt-core_hw_mcu_native.a(hal_uart.o)
"_getifaddrs", referenced from:
_native_sock_itf_getnext in @apache-mynewt-core_net_ip_native_sockets.a(native_itf.o)
_native_sock_itf_addr in @apache-mynewt-core_net_ip_native_sockets.a(native_itf.o)
_native_sock_itf_addr_getnext in @apache-mynewt-core_net_ip_native_sockets.a(native_itf.o)
"_poll$UNIX2003", referenced from:
_socket_task in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
"___bzero", referenced from:
_TEST_CASE_config_test_custom_compress in @apache-mynewt-core_sys_config_selftest-fcb2.a(config_test_custom_compress.o)
"___stack_chk_fail", referenced from:
_ctest_handle_export in @apache-mynewt-core_sys_config_selftest-fcb2.a(conf_test_fcb2.o)
_c2_handle_export in @apache-mynewt-core_sys_config_selftest-fcb2.a(conf_test_fcb2.o)
_c3_handle_export in @apache-mynewt-core_sys_config_selftest-fcb2.a(conf_test_fcb2.o)
_conf_get_stored_value in @apache-mynewt-core_sys_config.a(config_store.o)
_conf_set_value in @apache-mynewt-core_sys_config.a(config.o)
_conf_get_value in @apache-mynewt-core_sys_config.a(config.o)
_conf_commit in @apache-mynewt-core_sys_config.a(config.o)
...
"___stdoutp", referenced from:
_tu_pass_cb_self in @apache-mynewt-core_test_testutil.a(testutil.o)
_tu_fail_cb_self in @apache-mynewt-core_test_testutil.a(testutil.o)
"_openpty", referenced from:
_uart_pty in @apache-mynewt-core_hw_mcu_native.a(hal_uart.o)
"_recvfrom$UNIX2003", referenced from:
_native_sock_recvfrom in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
"___strncpy_chk", referenced from:
_c2_handle_get in @apache-mynewt-core_sys_config_selftest-fcb2.a(conf_test_fcb2.o)
_c2_handle_set in @apache-mynewt-core_sys_config_selftest-fcb2.a(conf_test_fcb2.o)
_conf_get_value_cb in @apache-mynewt-core_sys_config.a(config_store.o)
_native_sock_addr_to_mn_addr in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
_native_sock_itf_getnext in @apache-mynewt-core_net_ip_native_sockets.a(native_itf.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: Test failure(s):
Passed tests: []

看文档介绍号称mynewt支持gcc5,于是在/repos/apache-mynewt-core/compiler/sim/compiler.yml中config成gcc5, 看到明显不对,最基本的头文件都找不到。

1
2
3
4
5
6
7
8
9
10
11
 Mac01:~ wnnwoo$ newt test @apache-mynewt-core/sys/config
......
Testing package @apache-mynewt-core/sys/config/selftest-nffs
Compiling repos/apache-mynewt-core/crypto/tinycrypt/src/aes_decrypt.c
Compiling repos/apache-mynewt-mcumgr/cborattr/src/cborattr.c
In file included from /usr/local/Cellar/gcc@5/5.5.0_6/lib/gcc/5/gcc/x86_64-apple-darwin17.7.0/5.5.0/include/stdint.h:9:0,
from repos/apache-mynewt-core/crypto/tinycrypt/include/tinycrypt/aes.h:52,
from repos/apache-mynewt-core/crypto/tinycrypt/src/aes_decrypt.c:33:
/usr/local/Cellar/gcc@5/5.5.0_6/lib/gcc/5/gcc/x86_64-apple-darwin17.7.0/5.5.0/include-fixed/stdint.h:27:32: fatal error: sys/_types/_int8_t.h: No such file or directory
compilation terminated.
Error: Test failure(s):

compiler.yml中再config成gcc6,依然是一堆error,还是很多基本的API 都link不到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Mac01:~ wnnwoo$ newt test @apache-mynewt-core/sys/config
....
ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
ld: warning: ignoring file /usr/local/Cellar/gcc@6/6.5.0_7/lib/gcc/6/libgcc_ext.10.5.dylib, missing required architecture i386 in file /usr/local/Cellar/gcc@6/6.5.0_7/lib/gcc/6/libgcc_ext.10.5.dylib (1 slices)
ld: warning: ignoring file /usr/local/Cellar/gcc@6/6.5.0_7/lib/gcc/6/gcc/x86_64-apple-darwin20.3.0/6.5.0/libgcc.a, building for macOS-i386 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libSystem.tbd, missing required architecture i386 in file /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libSystem.tbd (3 slices)
Undefined symbols for architecture i386:
"_ioctl", referenced from:
_native_sock_bind in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
(maybe you meant: _hal_flash_ioctl)
"_fcntl$UNIX2003", referenced from:
_native_sock_set_nonblocking in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
_set_nonblock in @apache-mynewt-core_hw_mcu_native.a(hal_uart.o)
"___stdoutp", referenced from:
_tu_pass_cb_self in @apache-mynewt-core_test_testutil.a(testutil.o)
_tu_fail_cb_self in @apache-mynewt-core_test_testutil.a(testutil.o)
"_fflush", referenced from:
_tu_pass_cb_self in @apache-mynewt-core_test_testutil.a(testutil.o)
_tu_fail_cb_self in @apache-mynewt-core_test_testutil.a(testutil.o)
"_strtoul", referenced from:
_c2_var_find in @apache-mynewt-core_sys_config_selftest-fcb.a(conf_test_fcb.o)
"_openpty", referenced from:
_uart_pty in @apache-mynewt-core_hw_mcu_native.a(hal_uart.o)
"_recvfrom$UNIX2003", referenced from:
_native_sock_recvfrom in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
"___strncpy_chk", referenced from:
_c2_handle_get in @apache-mynewt-core_sys_config_selftest-fcb.a(conf_test_fcb.o)
_c2_handle_set in @apache-mynewt-core_sys_config_selftest-fcb.a(conf_test_fcb.o)
_conf_get_value_cb in @apache-mynewt-core_sys_config.a(config_store.o)
_native_sock_addr_to_mn_addr in @apache-mynewt-core_net_ip_native_sockets.a(native_sock.o)
_native_sock_itf_getnext in @apache-mynewt-core_net_ip_native_sockets.a(native_itf.o)
ld: symbol(s) not found for architecture i386
collect2: error: ld returned 1 exit status
Error: Test failure(s):
Passed tests: []
Failed tests: [sys/config/selftest-fcb2 sys/config/selftest-nffs sys/config/selftest-fcb]

看起来是跟64位的兼容性问题,查来查去,查到Xcode的Release notes,看起来要安装旧的Xcode 9.4才行。

1
The macOS 10.14 SDK no longer contains support for compiling 32-bit applications. If developers need to compile for i386, Xcode 9.4 or earlier is required. (39858111)

后续再build下开发版上的binary试下,问题应该少些才对。
待续……

跑步治愈一切

发表于 2021-03-17 更新于 2021-05-04 分类于 成长 阅读次数: 评论数:

翻到一本关于跑步的书:《跑步治愈》,初看书名,像是个病句,到底是要治愈什么?副书名是:Running Cures All,跑步治愈一切。
作者张展晖专攻跑步教学,是一位爱读书、爱思考、爱总结的跑步教练。该书吸引我的不只是精心总结的跑步套路,还有一个似曾相识的“心流”的概念。

心流是一种最优心理体验。
处于心流状态中的人,潜意识系统被打开,所有的清醒意识会被潜意识代替;同时,大脑将充斥着两种给人带来兴奋的化学物质,一是去甲肾上腺素,一是多巴胺。它们共同带来了注意力的提升,反应能力的提升,以及试错学习能力的提升,给人一种“如鱼得水,飘飘入仙”之感,体验过一次的人,都再想多体验一万次。非常巧的是,这两种激素不仅在人进入心流状态后会产生,跑步过程中这两种激素也是源源不断地产生。(第39页)

类似的概念在其他作品中遇到过两次。

  • 村上春树在《当我谈跑步时谈什么》提到自己在跑100公里超级马拉松的时候,体会到了幸福感,进入了一种“自动驾驶的状态”,认为“先有了跑步,再有了我”,也是这种感觉。

    我跑,故我在

  • Daniel Kahneman在《Thinking, Fast and Slow》里介绍了类似的概念“flow”,

    People who experience flow describe it as “a state of effortless concentration to deep that they lose their sense of time, of themselves, of their problems”.

另外张教练还提到Runner们自己要多关注自己的内心和身体,不要被外界的或是外人目标影响到。

外界的目标会随时改变,外界向你提供目标时,往往以某种奖励吸引你追随它。世界上大多数奖励的动机时控制你,不想做外部目标的奴隶,就要拒绝它们的奖励。拒绝外部奖励最有效的方法就是建立“内奖”,即选定你的目标,在追随目标的努力中,获得内心的秩序和成长的乐趣,这就是内奖,就是自我奖励。

123…10

Wen Wu

I'm a bluetooth Host and Controller developer
94 日志
24 分类
45 标签
© 2025 Wen Wu
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v7.2.0