2025-06-27 00:00:00
重庆十二日行,不过还是以工作为主,闲时去逛逛。距离我上次去重庆(2013.10)已经过去接近12年了,物是人非,很多地方是以前我都没听说过的,甚至以前都没有的地方。
物是人非,上一次匆匆地来,匆匆地走,很多东西都没怎么体验到,这次我在重庆很想你。
六月八日中午落地重庆,此时深圳已经很热了,没想到刚落地的重庆竟然还这么清爽,皮肤还没适应过来,出乎意料。不过这丝凉爽,几个小时后就再也感觉不到了。
住在了离弹子石老街非常近的地方,这里距离机场非常近,20分钟就能到。这年头什么老街都是新建的仿古建筑群,青石老建筑,有点民国时期的样子。住的这个由于是属于长嘉汇,又离老街这么近,基本消费都是景区级别的,比深圳的日常消费都还要高一点点。
长嘉汇购物公园,那就更离谱了,比深圳还贵,感觉价格是深圳普通CBD的2倍,不知道重庆本地人是咋消费得起的。
这个附近日常人确实不多,尤其是白天,人烟稀少,但是到了晚上,人相对就多很多了,难道是出来乘凉?但是重庆晚上一点都不凉快啊,闷热闷热的。
弹子石广场看江景,看朝天门,看夜景不错,后面是重庆规划展览馆,晚上也亮灯
十多年前第一次去重庆,最喜欢吃的就是他了,那会好像还不是预制菜,可以看到后厨在炒。最喜欢的就是川菜小炒,乡村基就可以选两三个小炒,小份量拼一起变成一个套餐,当时觉得可以吃一辈子都不厌烦的那种。
现在去,上餐不超过一分钟,啥都是预知好的了,没了烟火气。广场周边的餐馆吃了个遍,就一家炒的味道和我小时候吃的川菜很像,其他家感觉差别还是有点大的。
石头建筑群,在山上,需要走一点台阶,还好不是很高,人文气息比较重,整体规划也还行,路上还遇到了佛造像和拓印馆,免费看,收费体验拓印,带小孩可以去玩玩。
比较巧的是DNF 17周年,在这里做了活动,有一些打卡点或者游戏点设置在山城上,老街也是类似的,全国地摊该有的他都有,还有一些重庆这边特有的糖水摊子。
白天来是非常热的,晚上可能好一点,山城晚上灯光也更好看一些,山顶有一片小玻璃栈道,可以看这个类似绣花针的东水门·长江大桥
路上偶遇一个猫猫,好想喊他起来重睡
索道过去只有一趟,价格30,体验极差,需要等至少半小时起步,还是淡季,索道车厢大概一次坐三四十甚至更多的人,拥挤程度和早晚地铁差不多,没先到好位置,那你就站中间啥也看不到了,你也不可能挤的动,对比越南的世界第一索道,能说拉跨,建议别来。
当地人说这就是他们以前的公交系统,大可不必来吃苦。
解放碑附近人还是挺多的,重庆的市中心,这个高楼的密集程度,我感觉堪比深圳的城中村,都挨得太近了
解放碑跟前吃了一下防空洞的老火锅,就是红油,以辣为主,能吃,周边街道上一个火锅店挨着一个火锅店,多得离谱,满大街也都是火锅的味道。
后来出租车司机跟我们说千万别去市中心吃,太坑了,可惜晚了,我们都吃完了,费用也确实不低。
经常听人提起的一个地方,总感觉有点韩国地名的味道,其实就是长江边上沿着悬崖建的一些仿古建筑,高低跨度挺大的,里面错综复杂的
内部看起来有点香港老街的赛博朋克感觉,实际上很多特产店、潮玩店、服饰出租、拍照出片的店。稍微靠外一点就是同质化严重的全国地摊店。
洪崖洞下入口还有个小瀑布,洞里有点祈福的小道具
朝天门没啥特殊的,晚上从对面看过来更好看一些,重庆也就夜景不错了
就是那个著名的重庆吃火车、吃地铁,地铁穿楼的地方,不过这个打卡,估计要从江对面拍更好一些,这个位置很难,而且人超级多的。
十八梯是因为吃水的井距离居民住处刚好十八步石梯,所以叫十八梯,也一样的是老街风貌,十八梯很大一片,不过看起来路对面还没改造完成,很多店铺都还是空的。
老街上总是有一些非常不和谐的,大俗之物
还有这种非常无厘头转圈的鸭子,不懂什么意思。
晚上去了个苍蝇馆子,烧鸡公,贼辣,红油里捞鸡肉吃,中午吃了火锅,晚上再吃这个超辣的,我是顶不住了。
匆匆那年,磁器口是我重庆唯一重复去过的地方,一下车我有点陌生,这好像不是当年的磁器口啊,这建筑也太新了点,我记得以前的磁器口可是又老又破的。
磁器口新街入口,这温度计38度,确实是一水的新建筑,宽阔的街道,焕然一新的石砖,没了那味道,也有可能是重庆这种街太多了,审美疲劳了。
新街有个磁器口历史博物馆,看到15年磁器口才被认定为文化老街,那我当年来的时候还啥都不是呢,顺着博物馆一直往下走,就能走回老街了
小小网红打卡点,梵高风格的小巷子
老街这里好多麻花店,好像当年还带回去给老爹吃过
老街尽头就是江边了,旁边是各种洪水曾经淹没的高度
磁器口里还有一个西魏古刹,宝轮寺,内部不允许拍照,寺内的修士还有猫猫求领养,我去看了一下刚出生一两个月,还很小的猫咪,很可爱。
沙坪坝,西南政法大学的老校区了,似乎没多少学生,都是继续教育的成人了,校区也很小,走了一会就从另一头出去了。
晚上去了重庆很有名的火锅店:俊杰火锅,人也超多,平常日子里也要排队,主打一个辣,第二天主打一个窜,以后还是要量力而行,该鸳鸯的还是鸳鸯吧,能吃辣,但是不能一直吃辣。
重庆实在是太热了,蒸笼一样,这个地方只适合晚春天或者晚秋来玩,其他时间绝对不会再去了。
整体重庆没啥特别好玩的,山城、古镇、老街实在是太多了,看的人疲劳,只有夜景值得一看。
重庆的司机倒是都挺好的,聊起来也都很热情,开车可是真狂野啊,还是路上电动自行车少,可以飙一点,对比深圳这么开早就撞人了。
重庆不禁摩,路上各种轰轰轰叫的重型摩托,炸街一流。
2025-06-26 00:00:00
STM32 DMA数据丢失,这个问题还挺常见的,之前我也遇到了,不过由于只是首数据丢一个字节的数据,对于整体不是很大影响,所以没在意这个事情,放过去了
之前遇到的”DMA PWM输出第一个bit bug”
https://elmagnifico.tech/2020/06/03/Dshot-STM32-PWM-HAL/
这次这个问题变得很严重了,每次数据传输都有比较大的概率丢一个bit的DMA数据,很是奇怪。还有一个小现象,似乎电压波动更大一点,丢的概率就更大一些,这个现象一度让我以为是电源问题,想丢给硬件去解决。
不过后面仔细看了一下现象,怀疑了一下问题发生的点,后续还是软件解决了。
还是发生在Bidir-DSHOT中,由于每次数据发送需要接收返回的内容,所以Timer 触发 GPIO的DMA并不是循环模式,而是单次模式,工作完成以后切回GPIO Input模式等待接收,收完再切回输出,以此循环
https://elmagnifico.tech/2023/04/07/bi-directional-DSHOT/
相当于每次DMA传输都是首次DMA,这个首次发生数据丢失,这个数据本应该是0的,输出却是1,而后面的数据都是正确的,这个概率还不低,会直接影响到接收方的电调识别,导致这次的Telemetry无法返回。
由于Bidir-DSHOT的特殊性,驱动中传输结尾本身就会发送一些没用占位符,那么同理,我们可以在传输前也发一些占位符,让首bit出错,出现在没用的地方,不影响后续电调的识别。
Bidir-DSHOT的波形本身也比较特殊,空闲时是高电平,那么基于此只要在DMA传输开始前先传输3个字节的高电平信号,再开始真正的
数据传输,那就可以了。
这个方案是最简单的,改动几个数组就行了
也是突然灵机一动,想到这个DMA和Timer有一些特殊性,是不是二者的时间没有对齐导致的。
Timer启动,理论上第一次启动就立马会触发DMA搬运一次数据,但是如果此时DMA没有启动呢?所以DMA错过了一个bit的数据,下次Timer再次触发,此时给到DMA的搬运序号就递增了,那么DMA就开始搬运第二个数据,这个流程如果猜想正确,那么就完美符合我们当前的现象。
这个验证也比较简单,估计在DMA和Timer启动之间加一点延迟,让DMA启动延迟大一些。实际看到,确实可以造成100%的数据丢失,延迟足够大甚至有可能丢更多。
那么解决起来也比较简单,先让DMA启动,在确认启动的情况下,再去启动Timer,避免二者有配合间隙,实测后,DMA丢数据的情况基本消失了。
我的突发奇想,也同时让Cursor去解决了一下,Cursor给的解决方案基本和我的想法一致,他两种方案同时都做了
说明这个问题还是经常有人遇到的,之前放过去了属实不该
2025-06-05 00:00:00
NS2总算发布了,今天就直接拿到了,ns1总算可以淘汰了,各种小问题已经懒得折腾了
香港官网直接预定的,3750港币
但是为了这个专门弄了一个香港手机号,-229
自提,交通来回,-75*2
算下里成本都3800了,而京东或者pdd、淘宝各种折扣打下来最低可以弄到3000单机器
自提地点选了西九龙高铁站的自提点,不出站都能提走(其实还是出了)
群友3号就从顺丰APP上看到了发货,实际也确实是3号就寄出了
顺丰还必须得是香港顺丰,挺难安装的,安装完成就能看到提示了,4号就显示派送了,但是被官方统一要求5号才能取
【順豐速運】單號SF3179698366232,閣下的包裹預計派送時間只作參考,根據寄方統一要求快件將在6月5日順豐站營業時間內正式開放自取,屆時請留意APP的取件通知。謝謝 。
从4号开始取货时间一改再改,很急,直到5号早上10点多,我都到高铁站了才显示可以取货了,但是高铁还要等1小时
出高铁站,到达G层,再拐上去就能看到顺丰网点了,很多人过来取件
拿到手直接就开箱了,迫不及待
第一感觉可真大,按上手柄以后感觉还是有点松垮
不更新完进不去主页,新的肩键很松,感觉有点廉价
本身手柄是磁吸上去的,吸上以后中间还是有个缝隙,不像以前是严丝合缝的
第一批还是太急了,TypeC口做工没对齐
支架的阻尼感还可以,比1代的好,左右看起来只是宽了一点,但是上下宽了挺多的
以前ns1的收纳包放不下ns2了,兼容不了
这个英标插头是真的恶心,转换头也大,合在一起超级难看。适配器最大功率是60w,20V3A,基本上现在新一点的适配器都能做到这个功率了,甚至转换器本身都有65w的供电口
启动时有一个整体转移,需要插sd卡,还要ns1在旁边,我又没带,不走这个流程又进不去,只好先不转移,后续回去以后再一个个账号转移。
转移也挺简单的,两边账号登录以后,很快就全转移过来了
ns自带256g存储,比以前32强太多了,暂时不用买那天价的sd卡了
游戏直接开uu下载,还是很快的
常玩的游戏都下完还有一百多G,暂时都可以不考虑SD卡
就是现在的虚拟卡系统,转来转去的需要蓝牙配对,配对起来有点慢,太麻烦了
ns2插进底座里,可以前后晃动,有点松胯,对比ns1晃动范围大了很多,不过这样也有好处,散热更好一些,不像一代闷罐
有一说一,传送道森林是真的快,以前我记得我都能去撒个尿,现在一下就好了
这都是买了高清材质包,然后开的游戏
可以看到是4k输出,60hz,120hz需要游戏独立支持才行,同时电视也得是hdmi2.1或者更高标准才行
同捆的马车世界,比赛和马车8好像差不多啊?就是多了一个自由探索,有点地平线的意思,但是里面有很多小挑战,小关卡。但是不像地平线开放世界,他还是一个地区一个地区的方式,只是地区地图很大,很复杂而已
老手柄匹配到新机器也非常简单,流畅,用起来没问题,只是充电又得回到老机器上充,这个稍微麻烦了一点。新手柄磁吸还是非常强的,取下来有专门的按钮,主要是靠顶出来脱离磁吸范围的,硬拽也能取下来,但是容易拽歪,损坏接口。
以前是可以主副账号同时登录多个机器,然后就能共享游戏,离线模式下可以同时多人玩同一个游戏,互不干扰,也就是淘宝中出租账号的商业模式,而新的系统强制使用了虚拟卡。
虚拟卡要求每个游戏仅能存在于一个机器上,一旦转移到别的机器上,即使同账号,你也不能打开了,这样就封堵了出租账号的共享漏洞。由于我是全数字版,以后分享给朋友账号就不行了,只能虚拟卡给别人玩了,好处是不用到处登账号了,坏处是共享不方便了。
续航基本没啥提升,电池容量在那里,玩塞尔达大概就是2小时半不到就完全耗尽了,刚好够坐飞机,从坐下一直玩到降落,刚好没电
整体系统是比以前流畅了许多,特别是进商店啊,打开游戏,启动速度都比以前快了好多,感觉和ns1不是一个世界了
2025-05-20 00:00:00
记录一下Su7 Ultra下赛道的准备,还有一些难找的信息、科普内容都汇总到一起了
赛车头盔有下面一些品牌:
Xquip,好像是唯一的国产品牌,入门型号FF-S4,FIA认证大概要2700左右,SA2020认证只用1700
OMP,优点是视野大,入门型号GP-R,2900左右
Aria,优点是帅,其实感觉好像差不多,入门型号GP6S,3400左右
SPARCO,入门型号W01,3000左右,碳纤维版5500,好便宜
Bell,高端牌子,入门型号GP3,4600左右,经典型号RS7,5500多,碳纤维版9700多,
Stilo,好像最便宜都5300,主打拉力头盔,GP类的好像比较少
我买了Aria GP6S,还行,送两个头套,不用额外买头套了
主要是防止你颈椎折断的,他需要和头盔适配,两个卡子是和头盔上的汉斯扣固定的,防止你过度低头,后面的靠背是防止你后仰过度
汉斯价格也不低,最少也要2000大几百
头套,如果头发比较长,头盔是比较紧的,容易夹头发和反折耳朵,所以大部分人会带头套然后再带头盔
还有赛车服、手套、鞋啥的,暂时还用不到,就先不考虑了,赛道日基本头盔是必须品,其他的要求不是很严格
赛车上的安全标准大概就是这么两类,FIA主要适合欧、亚地区的赛事,SA2020来自于Snell适合美国那边的赛事。由于这个规则不断演变,安全性要求越来越严格,所以这个标准一直在变,可以看到后缀的数字
FIA8859-2024
SA2020
FIA8859-2024,是现行标准,对应到头盔,每个头盔寿命只有5年,过了以后安全认证就不过了,它对应拿到的那个认证也只有5年有效期。国内一般都是认FIA的设备,所以无脑选FIA即可,不过价格也贵一些。
四点式的安装要求,挺麻烦的,随便改的只能说能用,但是能不能起到应有的效果,就要打个问题了
https://www.bilibili.com/video/BV1rbQDY2Ejs
先说明高翔的改装方式是完全错误的,四点式的安全带本来就不能被固定在座位自身上,这样这个安全带根本就没起作用。
这里要相对正规的安装,是需要使用后排的儿童安全座椅的卡扣(ISOFIX),做个转接即可,这样平常也很好取下来。
把这个插入到ISOFIX接口,然后四点式安全带连接到这个卡口即可,原本ISOFIX的带子就不要了
这个地方可能角度也有点偏大了,也可以系在座椅放下以后的黄色卡口上
接这个黄色(也有可能是银色)的固定卡口,安全性上可能会更好一点(这种方式是不需要ISOFIX的,直接安全带就能接了,长度也够)
腰部的安全带需要锚定椅子下方,这个板(L型拉环扣)需要把座椅弄起来固定上去,可以让4S店帮忙弄一下,也很简单,到这里基本上这个4点式的安全带就完全弄好了
改装成本很低,四点式安全带二百左右,ISOFIX二十多,L型拉环扣十几块,一共二百五不到就能解决安全带问题
这种方式是改动最小的,也相对安全,同时也最灵活的,电车就算日后需要年检了,也很简单就取下来,完全看不出来改装的事情
到小米4s店,跟他说明安装方案以后,他感觉是可以装的,不用收费,作为整备环节之一
小米4s的车间不给参观,但是由于我要沟通方案,还是进去了,其实好像也没啥机密的,就正常维修店
这个L型扣板和座椅其实有点不适配,座椅的滑槽下面有一个卡位方块,需要卡到车底盘下面,这个东西,还挺长的,大概有1cm高度,扣板的孔是过不去的,直接放这个方块下面,那你螺丝都拧不上了
然后我摸了一下,这个前面还有一个定位的长柱子,这个柱子就比较细了,扣板可以扣下去了。
但是还是对整个座椅有点影响,他把座椅垫高了一点一点,大概3mm左右,这就导致后面轨道不是完全卡下去的,稍微有点影响安全
弄完以后我的4点式安全带就可以真实用了,试了一下还是很牢固的,但是会限制到座位前后移动,安全带的扣和座位侧面有点阻碍。
后续发现座椅下面有一个几毫米的空间,可以穿过布带,那这个方案还能做的更好。
顺便在4s店看了一下最近传的比较多的大灯上盖板翘起的问题,确实有,很多外面晒的车,多少都有一些,微微弓起了,能看出来不是以前的严丝合缝。
考虑到你可能上墙,所以有些赛道要求你必须安装了拖车钩才能上赛道。
Su7和Ultra都是在车右侧灯下有这么个活动门,旋转就能取下,拖车钩在后备箱的工具包中,旋紧即可,同时外接电的电源线也在这里,车彻底没电时,这个电源线可以外部充电,从而打开前备箱,进而维修充电什么的。
拖车钩安装以后,这个盖子可以放到后备箱里,那个红线可以塞回里面,最好带个胶带把正负极粘一下,防止碰到一起了,有个老哥直接现场拿胶带粘前面了,稍微有点搞。
主要是深圳周边的,可能可以去玩的赛道
ZIC的赛道日,需要关注公众号珠海国际赛车场ZIC1993
和泛珠三角超级赛车节ZIC-1993
,还有一个公账号是精彩乐动
,应该都是ZIC官方的活动号,赛道体验或者活动可以通过他们获取相关信息
报名用的是微信的报名工具,填一些基本信息就可以了,双人套餐更便宜一些,不过是两人共享时间,时间上有点少
ZIC的赛道日比较少,大概一个季度能来一次,珠海赛道日可以不用自带头盔,还挺好的,对车也没啥要求,你就只管开就行了。
ZIC赛道算是相对其他来说比较合理的,适合GT类型的车去跑,Su7也有一战之力。
纵观全国所有赛道,只有珠海赛道是最长的,直线给的也是最多的,非常适合新手去体验一下超级速度,适合Ultra去玩,其他赛道相比之下直线就比较少了,弯道就比较多,珠海的服务各方面做的也都算是不错的了。
珠海也有半年卡,1999,可以跑5次,每次30分钟,也就是一次200,还是挺不错的。
赛事活动关注公众号:从化国际赛车场
,从化赛车场主打摩托和卡丁车,汽车的很少很少,日常是可以买卡丁车票去玩,但是汽车赛道日基本没有,所以可以忽略这个赛车场
GIC之前说要拆掉的,后来又停了,由于这个名字和麻涌的都特别像,我们就用地名称呼,这个是肇庆赛车场,赛事活动关注公众号:广东国际赛车场
GIC这个价格看起来挺便宜的,而且可以玩的时间,看日历很多,他一节30分钟,珠海15分钟,差距啊…
GIC赛道体验也是有活动的方式,报名需要询问对应的联系人,价格是750,时间不一定,需要每次问
麻涌赛车场的活动需要关注公众号:广东竞速国际赛车场
或者是方舟赛车
,有活动会发公告
麻涌赛道日大概是一个月一次,价格就是贵一些688,但是胜在时间长,相当于一伙人包一天了,然后不含头盔,需要你自己处理
麻涌的赛道日,价格688,含保险。车不允许用热熔或者半热熔轮胎,不能改装。新手第一次就是需要弄个头盔,其他倒是没啥大问题。
麻涌赛道偏小,弯道超级多,而且都是那种180的掉头弯,开起来难度还是挺大的,适合弯道选手,车比较轻的那种。Ultra在这里没有明显优势,反而很危险。
没有任何联系方式,老的运营方的公众号:惠州福岗赛车场
,基本都没人管了,所以不知道现在是什么情况,只是看B站或者其他分享偶尔有在这里玩的信息,但是具体怎么个规则,可能还得现场去了才知道。据说:全天票800,半天票600,半小时300,10分钟150,这个18年就是这个定价
福岗赛道是最小的,一共才1.4km,据说是卡丁车改的,比较适合小车漂移。
赶上的赛道日就去体验一下,本来刚提车那会3月底就有ZIC的比较大的活动赛道日,然后就给错过了,后来4月底好像还有一个,去了越南也错过了,这次5月底的总算赶上了。
赛道体验之旅基本大差不差,都是这样的
5.25去ZIC赛道日体验
行程大致如下:
10点前签到,然后接着开始赛道前培训,20分钟结束,接着大家下去开车到维修区排队,10点30等待安全车带着跑2圈回到维修区,然后就是正式的15分钟。大致30分钟结束,然后第二组继续上一个循环。如果双人体验,自行决定15分钟何时回到维修区换人。
实际体验,新手还是挺多的,一场会亮个一两次红灯,有车故障停在路中,也有Ultra冲下沙石地导致红灯。再加上慢车很多,实际跑起来很难跑出像模拟器里一样,完整的一圈。
提前跑模拟器还是有用的,至少你知道在哪里需要刹车,你对能不能过这个弯以及后果认知是很清晰的,上了赛车场就跟回家一样熟悉
上午弄完了,下午就可以去玩卡丁车了。卡丁车也很近,过了赛道桥往后走就到了,卡丁车还是比较好的,车子也还行,提供头盔、汉斯,现场工作人员都帮你弄好。
下午是电车油车的半年卡活动,油车人很多,但是电车据说人很少,就4个电车,还2个Ultra,他们就能完整开一圈,可以开到1.50+,还是很不错的。等下半年年卡放出来,再去玩玩,年卡一场好像是半小时,算来下一场才200块,很便宜。
小米的这个赛道大师,数据不能导出,赛道也不会自动录个单独的一圈的视频,哎很蠢,想对比一下别人的数据或者跑法,就不行。
5.31去麻涌赛道玩一天,实际安排其实很差。
说是自由跑一上午,其实实际给新人就只有一节,然后另外一节是中午没人要的时间,下午还有一节直接用来比赛了。每节时间间隔都非常长,等起来很消耗精力。摩托车是临时加上去的,然后又临时去掉了,整个时间安排现场又有改动。
麻涌赛车场,新人培训,也是野人培训的,有很大偏见,对比珠海来说不够客观,也不够专业,培训者好为人师。
我上午跑的第一节就跑出了我的最快,74秒,中午太热了,根本没状态,都是80多秒。
实际麻涌赛道由于过短,人又多,分组很多,但是每组只有8个人,而且分时间入场,跑起来更像一个人在玩,新人基本没有超车什么的危险的行为。整体可以完全沉浸其中挑战自我,这点比珠海好。
下午太热了,我提前撤场了,然后计时赛中就出现了Ultra和Max相撞的情况,两人双双退赛,Ultra车损可能高达5w,还得自费,那个老哥直接血亏。
我跑模拟可以跑到61s左右,实际开发现,确实有很大差距,很多地方速度不敢提上去了,赛道比较滑,过弯都是磨着轮胎叽叽叫着过的,赛道中同一个位置(T5转T6)spin了两次,尾巴刮到了一点树丛,还好及时救回来了,没有出更大事故。
看了一下分组赛成绩,油车,类似86这种在这里非常快,都接近60s,全场最快有一个60s的,非常厉害了。
每组的前三可以得到一个小奖杯,可以上领奖台,有点意思。
如果是第二次去玩,就是非新人身份,可以提前去了提前进去练习,晚上弄完了也有自由练习时间,甚至还有自由包场时间(价格也还行)。
大佬指点说很多地方入弯太快了,一直响轮胎,可以更慢入,更快出弯。
Ultra Club赛道的会员服务,不支持小赛道驻场,只有珠海这种大赛道才有赛道驻场(目前情况是非小米官方组织,连场都进不去,很尴尬)
去赛道日前,预约上面检查,他就想你开去4S店检查,感觉让他上门服务也有点不情不愿的。别人up主那里就各种凌晨服务、很舔,到你手里就有点看人下菜的意思了。服务还是有的,四点式安全带让他们协助安装了,遇到了一个小哥很积极,人很好。
具体到赛道日的时候,珠海由于是官方的,非小米的,所以赛前检查他们进不去(小米竟然没把这里的关系打通,我服了),他们就在车场门口等我,放胎压,检查一下常规的东西,安装拖车钩啥的,虽说是附带小米的赛道大师讲解,教学,但是实际上这个人没下过赛道,没跑过模拟器,赛道大师你觉得他能用过吗?
跑完以后,再开回来给他们继续检查,说我胎没热起来….那个冲出赛道的也直接预约拖车送回店里检查去了。
这是之前一个车友进石子地以后的情况,地上很多石头,清了两次才弄干净,这种情况Ultra会员可以免费处理,还是挺好的。
官方一直没有车友会,找个其他人也联系不到,给你拉群,就只拉你一个,我服了。我自己组,珠海一天就遇到10个Ultra,遇到一个我拉一个。
有需要进群的可以找我拉进去
漂移场地找不到,之前有一个中山的三角漂移场,不过好像也倒闭了?现在也联系不到了。
DDD漂移俱乐部在广东省珠海市快泊停车场,看了下场地也很小,不如三角漂移场,自由玩价格还行,但是体验价格有点贵的离谱了。更有性价比的地方,深圳附近再没听说了,大概就是这样吧
麻涌赛车场,漂移500,4h
还有漂移教学的价格,挺贵的,不过如果能教会还是挺不错的。
其他正经赛车场好像都有一块区域给漂移使用,比如福岗赛车场,珠海赛车场,但是具体收费?体验什么的好像都没有说明,等我去了看过再补充
国内这个赛道信息有点难找,普通人想进圈子都比较困难,本身安全设备也不能少,而且由于小众,价格下不去,玩车的的额外成本还真不少。
总体来看珠海ZIC是最适合Ultra去玩的,正规、总体价格相对也不贵,容错空间大,失误也比较难致命,培训体系都比较完整客观,可惜的是能去玩的时间比较少。
2025-05-19 00:00:00
之前做了QEMU模拟运行FreeRTOS,模拟STM32,但是毕竟不是官方QEMU,对于嵌入式这边的芯片或者设备模拟还是差一点。
https://www.qemu.org/docs/master/system/arm/stm32.html
Renode比较知名的就是用来模拟物联网设备,这种设备往往都弱一些,MCU这种比较多。
具体关于这两个说法有很多,谁更合适还是要实际用一用,体验一下才行
https://renode.io/
https://github.com/renode/renode
Renode 的指令模拟器使用 C 语言编写,外设模拟器使用 C# 语言编写,兼顾了运行效率和开发效率.
Windows下直接安装即可,启动以后是一个命令行程序,这里可以加载我们的模拟固件
start @scripts/single-node/stm32f746.resc
不建议跑这个例子,只是个输出helloworld,超级卡
start @scripts/single-node/stm32f746_mbed.resc
启动以后就能看到输出了
stm32f746.resc文件解析
# 定义仿真平台和描述
:name: STM32F746
:description: This script runs Dartino on STM32F7 Discovery.
# 创建仿真机器
using sysbus
$name?="STM32F746"
mach create $name
# 加载平台描述
machine LoadPlatformDescription @platforms/boards/stm32f7_discovery-bb.repl
# 配置显示和分析器
# 设置LTDC(LCD-TFT显示控制器)在仿真中的虚拟帧率为每秒100帧;
# 详细解释如下:
# ltdc:指的是仿真平台中的LTDC外设(LCD-TFT显示控制器);
# FramesPerVirtualSecond:表示“每虚拟秒的帧数”,即仿真环境下LTDC每秒刷新多少帧;
# 100:具体的帧率数值,这里设置为100帧每秒;
# 作用:
# 在Renode仿真环境中,LTDC的显示刷新速度会按照这个帧率进行模拟。这样可以控制仿真中LCD显示的流畅度和性能,便于调试和观察# 显示效果;
# 总结:
# 这条指令就是让仿真的LTDC每秒刷新100帧,用于控制虚拟LCD的显示速率;
ltdc FramesPerVirtualSecond 100
showAnalyzer usart1
showAnalyzer ltdc
# 指定要加载的固件,需要elf,而不是bin
$bin ?= @https://dl.antmicro.com/projects/renode/dartino-lines.elf-s_486816-cd8876ab9de60af779f4429dfe16c79bf831b84d
# 可以在模拟启动以后开启Gdb,这样就能直接接入进行调试
# machine StartGdbServer 3333 true
# 定义reset宏
macro reset
"""
sysbus LoadELF $bin
"""
# 自动运行reset宏
runMacro $reset
platforms/boards/stm32f7_discovery-bb.repl,关于硬件的描述在本地就有,看一下具体内容
using "platforms/cpus/stm32f746.repl"
phy: Network.EthernetPhysicalLayer @ ethernet 0
Id1: 0x0007
Id2: 0xC0F1
AutoNegotiationAdvertisement: 0x00A1
AutoNegotiationLinkPartnerBasePageAbility: 0x001
phy1: Network.EthernetPhysicalLayer @ ethernet 1
Id1: 0x0007
Id2: 0xC0F1
AutoNegotiationAdvertisement: 0x00A1
AutoNegotiationLinkPartnerBasePageAbility: 0x001
touchscreen: Input.FT5336 @ i2c3 0x38
isRotated: true
MaxX: 480
MaxY: 272
-> gpioPortI@13
可以看到这里定义了两个phy给以太网用,还有一个触摸屏,使用的是i2c3的接口,地址0x38,大小,使用的GPIO
使用外设指令,可以查看当前设备的外设和地址
peripherals
由于官方没有给h7的resc文件,我们就模仿f7写一个
:name: STM32H743
:description: This script runs demo on STM32H743.
using sysbus
$name?="STM32H743"
mach create $name
# 由于没有h7的board 所以这里用cpu模拟
machine LoadPlatformDescription @platforms/cpus/stm32h743.repl
# 模拟所有串口,注意串口名称可能不同
showAnalyzer usart1
showAnalyzer usart2
showAnalyzer usart3
showAnalyzer uart4
showAnalyzer uart5
showAnalyzer usart6
showAnalyzer uart7
showAnalyzer uart8
$bin ?= @platforms/bin/stm32h743.bin
macro reset
"""
sysbus LoadELF $bin
"""
runMacro $reset
启动测试
start @scripts/single-node/stm32h743.resc
在访问特定外设进行读取后执行 Python 脚本
(machine) sysbus SetHookAfterPeripheralRead gpioPortA "print '%s peripheral has been accessed to read'"
在访问特定外围设备进行写入之前执行 Python 脚本
(machine) sysbus SetHookBeforePeripheralWrite peripheral "print '%s peripheral has been accessed to write'"
include可以包含多个模拟器,启动的时候就会都启动,如果是多芯片模拟就比较适合
include @scripts/single-node/quark_c1000.resc
Renode里有模拟传感器数据的方式,相当于是你给一个数据表,类似CSV结构的,然后指定好接口,频率什么的,硬件就可以直接从这个表中读取到对应的传感器数据了
https://renode.readthedocs.io/en/latest/basic/resd.html
传感器本身的寄存器或者配置,这个机制需要额外去实现,官方有具体的例子
https://github.com/renode/renode-infrastructure/blob/3f1abde88ac5a2dae326b77ab91892f335e78f80/src/Emulator/Peripherals/Peripherals/Sensors/ADXL345.cs
看起来还是比较简单的,就是列出来可能会用到的寄存器,然后实现他的读写,数据寄存器需要额外的一个喂数据接口即可。
大部分外部传感器可以仿照这个来,只要补充寄存器定义和某些返回数据的接口即可
这个是打印机固件仿真逆向的项目
https://github.com/nviennot/stm32-emulator?tab=readme-ov-file
There’s some existing work in the STM32 emulation space:
- Mini404 emulates the Prusa Mini. Quite a feat. See the project’s hw/arm/prusa for the peripherals.
- Qiling emulates all kinds of devices, including STM32s. It would be a good candidate, but wasn’t fitting the bill because 1) it’s written in Python, and is very slow. 2) It doesn’t support what I really want which is tracing in registers that I care about.
- Renode: Emulate all sorts of devices, written in C#. The configuration files are finicky, and it’s overall pretty slow. I didn’t like it.
- Tinylabs’ flexsoc-cm3: This is Elliot’s project to have the real stm32 peripherals to be accessible directly to a host that is emulating a CPU. I haven’t tried it, but it looks promising.
- Use GDB and single step everything. That might be too slow.
前人的经验,主要是嫌弃模拟比较慢
Proteus的仿真也很常见,但是也只适合小型程序仿真,不适合复杂程序。而且绑定了硬件整体也必须得用Proteus才行,两边要配合起来,实际现实中用的还是比较少。可能是以前的PCB比较贵、周期长,没验证好直接打板成本很高吧,所以才有Proteus的仿真,但是现在速度快、成本低,完全用不到。
https://www.arm.com/zh-TW/products/development-tools/simulation/virtual-hardware
还有一个是ARM官方的虚拟化硬件,不过这个东西没有实例,也不知道具体细节是什么样的
比较复杂的是实现外设仿真,这个部分还得看怎么处理
https://github.com/silent-rain/stm32f103-tutorial/blob/master/docs/Renode%E4%BB%BF%E7%9C%9F%E6%A8%A1%E6%8B%9F.md
2025-05-16 00:00:00
GPU相关一些基础建设的常识
TPU,张量处理单元,主要是进行矩阵乘法计算
NPU,其实类似TPU,但是他是一种定制的计算规则,比如矩阵先乘后加,先加后乘,或者是更复杂的乘加乘加等等,相当于是定制化的计算单元,他是有适用的局限性的。如果专门为某个算法而生,那么这个算法就能吃满硬件加速,远超CPU或者TPU等其他方式实现的计算速率。
GPU,主攻并行计算,常常需要CPU指挥,广义上GPU是包含了TPU、NPU的,所以主力是强大的专业算力。
CPU,主攻逻辑运算,广义上CPU是可能会包含NPU和TPU,GPU的,但是多而不精,遇到一些专业问题,还是得专业的来搞。
但是,其实现在GPU的广义定义可能又发生改变了,英伟达新系列已经把一个小CPU作为协处理器融入到了GPU芯片中,这样GPU里就会包含CPU,因为在AI计算力,CPU不是大哥了,对于CPU的需求不是那么高,那么直接融一个ARM系列的GPU进去,显然是十分容易的。而且本身英伟达以前就做过客户端的ARM系列的CPU,这算是老树开新花了。
问一个模型,如果可以给无尽的资源,那么这个模型的训练、运行效率会被什么东西卡住。
目前来说,主要被限制的大概就是三个地方,GPU算力TOPS,GPU显存大小GB,GPU显存速率(如果显存无限大,可能没这个事情)。
粗浅的可以把模型分为训练和推理两个阶段:
训练相对推理来说,是更需要资源的,基本什么东西都要更好,更高的
推理阶段,往往是为了高并发,服务大规模使用者,而需要更大规模的GPU集群,但是模型本身可能只需要单GPU就能运行了。
NvLink,早年的NvLink主要是可以让双卡之间直接进行通信(NVLink Bridge),可以共享显存,而不需要走PCIe通道,让别人帮忙转发消息,这样速度非常快
这样速度可以达到双向900GB/s,远超内存等速率,但是此时NvLink只能双卡,双卡的规模面对巨型AI来说,还是太小了,于是乎就有了后续NvSwitch。
NvSwitch,就让原来的NvLink从双卡拓展到了8卡,8卡之间可以互相通信共享显存了。NvSwitch可以认为类似网络中的交换机,但是它实际上一个芯片模块,是直接在GPU主板上的。到了这个阶段,还是无法满足超级大显存的需求,于是乎又有了NvLink Switch。
NvLink Switch,他是真的变成了GPU的交换机,他变成了一个独立设备,用来跨主机连接不同的GPU集群。
除了NvLink这种英伟达自家的集群方案,还有一种就是通过网络来组集群,只是这种方式速度要比英伟达的方案慢一些
主要是说明数据链路级别的瓶颈
PCIe,目前最新是6.0,但是还没有实物,5.0才刚落地,速率大概是32GT/s,就算是6.0也才64GT/s,单通道是大概是7.876 GB/s,如果使用更多通道就可以*n,比如16通道就能达到126GB/s,单向速率也就是63GB/s。
DDR,目前最新是6.0,还是没实物,5.0落地一段时间了,速率大概是12800MT/s,明显比PCIe慢了许多
HBM,目前最新是3.0,速率大概是819 GB/s,比PCIe和DDR都要快很多,但是3.0还没落地,现在还是2E
阶段,速率大概是461GB/s,所以目前是GPU的首选内存
NvLink,起步就900GB/s了,甚至比HBM还快
Ethernet,目前落地的200Gb/s的网卡,只能达到25Gb/s的传输速率,整体比PCIe还是要慢一些的。
所以如果组集群或者涉及到多个GPU服务器之间通信,最后的瓶颈往往都落在了这个网络和GPU到PCIe的头上
抄个表格,这里只说了英伟达和华为,其实还有AMD和一些其他厂商,只是规模比起来有点小而已
NVIDIA | HUAWEI | 功能 |
---|---|---|
GPU | NPU/GPU | 通用并行处理器 |
NVLINK | HCCS | GPU 卡间高速互连技术 |
InfiniBand | HCCN | RDMA 产品/工具 |
nvidia-smi |
npu-smi |
GPU 命令行工具 |
CUDA | CANN | GPU 编程库 |
DCGM | DCMI | GPU 底层编程库/接口,例如采集监控信息 |
比较关键的就是CANN/CUDA,他整体定义了整个GPU算力的计算逻辑,或者说你能发挥多少GPU算力,都取决于这里怎么实现。
不同的模型或者算法,底层计算逻辑可能是不一样的,需要结合硬件对算法进行优化、加速,那么英伟达就提出来了一种基于英伟达GPU的通用接口,只要你按照这个逻辑去调用GPU,就能完整发挥这个GPU的硬件性能,否则每次算法或者模型都需要对不同的GPU做适配,这不得累死。
CUDA就成了英伟达的护城河之一,CUDA在整个领域中占比可能有90%之多,之前AMD搞得兼容CUDA的兼容层,都是为了想办法抢一部分他的客户,你不兼容CUDA,那你就要重新写底层优化,那就不具备通用性,那谁愿意用呢。
到GH200 这里,英伟达就意识到了之前服务器的局限,这里直接用自己的CPU和GPU,然后把内存也内置进去,然后这些内部访问都是可以直接通过NvLink的,不走什么PCIE了,相当于抛弃了传统服务器那一套东西,我自己玩了,充分降低了整个系统间互相通信的延迟。
基于GH200 构建了一个机柜NVL32,他直接就能提供19.5TB的内存+显存,而且任意一个GPU都可以访问,而且还能再扩展显存。这个机柜还能再次组成集群,从而适用于超大规模的模型的训练和推理
后续有新发现再补充
arthurchiao.art写的很详尽,拿来入门很适合,作者应该是携程的赵亚楠,看他的blog里基础和翻译文比较多,下面几篇基础都写的挺好的,值得一看
https://arthurchiao.art/blog/gpu-advanced-notes-1-zh/
https://arthurchiao.art/blog/gpu-advanced-notes-2-zh/
https://arthurchiao.art/blog/gpu-advanced-notes-3-zh/
https://arthurchiao.art/blog/gpu-advanced-notes-4-zh/
https://developer.nvidia.com/zh-cn/blog/nvidia-nvlink-and-nvidia-nvswitch-supercharge-large-language-model-inference/
https://www.nvidia.cn/data-center/nvlink/
https://www.bilibili.com/video/BV1SZdwYTEM8