那些年啊,那些事——一个程序员的奋斗史 ——71

2023-10-29 14:20
文章标签 程序员 71 奋斗史

本文主要是介绍那些年啊,那些事——一个程序员的奋斗史 ——71,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

段伏枥拿的这块Telechips的开发板所用的主控芯片是TCC7901,相对于AU1200而言,是好得很多了。姑且不说那简单易懂的编译安装环境,光是硬件的搭配就是AU1200所不能比拟的。AU1200并不支持NAND FLASH启动,而必须将启动代码放置于NOR FLASH,启动之后再从NAND FLASH读取操作系统。这个过程对于浸淫多年的老手来说,并不是一件很困难的事情,对于其中的每个步骤也是如数家珍;可对于段伏枥而言,因为之前并没有真正地做过如此接近于硬件的层次,光是理解就非常困难,更谈不上在此基础上进行开发了。而TCC7901的启动完全就没有那么复杂,并不需要NOR FLASH,只要将Bootloader和操作系统编译完毕,直接通过官方的下载工具烧录到NAND FLASH中即可正常启动。TCC7901开发初期的简便性和AU1200相比起来,无异于天堂和地狱的区别了。
 
    还有另外一点,对于段伏枥来说是至关重要的。AU1200的初始代码并不完善,需要程序员自己做大量的工作。如果是经验丰富的程序员也许还不见得有什么,毕竟他们的经验足以应付开发中遇到的大部分问题。比如,系统无法跑起来,他们首先就会去看看Bootloader是否正常运行,是否已经将系统拷贝到了内存,诸如此类种种;可对于经验匮乏的菜鸟而言,这便是大大的难关了,比如段伏枥而言,他根本就没经历过系统正常运行时的状况,现在却让他折腾系统的运行,这不是纯粹的赶鸭子上架吗?而使用TCC7901则是另外的一种状况,原厂已经将启动相关的东西已经做好了,只需要按照官方建议使用即可。万一在实际使用中出现了问题,也有一个能够正常运作的样板作为参考,也不至于像AU1200那样如一只无头苍蝇般乱撞。
 
    因为AU1200短期内是不可能让它跑起来了,一切都必须要重新开始;既然如此,那干脆直接放弃AU1200,转为使用TCC7901。对于这个建议,武总也是深表赞同,毕竟AU1200重新开始需要很长的时间,虽然这芯片现在还在主流范围,但谁知道一年之后是什么状况呢?何况这AU1200官方无法支持MLC,在成本的竞争方面并不占太大的优势。对于段伏枥个人而言,继续做AU1200相当于重新走老柳之前的道路,实在不是一件值得高兴的事情。做得好那也罢了,如果做得不咋地,那信心的打击实在不小。
 
    不过再简单的东西,也是底层,自然有无法解决的难题。如果要将开发板的参考原理图转换为产品,那么首先要解决的问题便是烧录模式该如何控制。因为开发板是有切换开关的,只要拨动在不同的位置,就可以在烧录和正常启动中互相切换;但作为产品来说,弄个切换开关的做法是不现实的,所以该如何才能做到又能烧录,又不用大费周折呢?类似的问题,如果在大公司里面,就非常好解决。公司大,人员多,肯定里面不乏有大牛,只要大家碰碰头,商商量,就很少有解决不了的大问题。可现在呢?小猫两三只。虽然段伏枥在底层方面还是比较菜,但那也是公司中最厉害的了。虽然安勒斯还有别的部门,但那都是做特定芯片的售后支持的,技术也不见得比自己厉害多少;何况,感觉上武总根本就不希望大家和别的部门有太多的接触。所以,在别的公司很容易找到解决途径的问题,在段伏枥身上却成了老大难。
 
    难道活人还能被尿给憋死?公司内部找不到解决,为何不直接找原厂?芯片是他们自己的,他们总该知道吧?刚好,原厂的datasheet就有相应的email地址,直接发邮件去问吧!不过,Telechips是韩国的厂商,最合适的自然是朝鲜文,可段伏枥不懂啊!还好,在技术界,英文还是通用语言。虽然段伏枥的英文不咋地,但对于能清楚描述问题,让对方能看明白这两个最基本的要求,自己还是非常有信心的。键盘上手指飞奔,然后鼠标点击发送,段伏枥便满怀欣喜等待原厂的回复了。为了避免邮件丢失,段伏枥还特意附上了自己的座机号码。


    原厂的回应还真是快,第二天就给回复了,不过结果却大出意外。


    这天下午,段伏枥正在研究芯片的启动代码的时候,突然电话铃声响起。段伏枥接起来一听,是一个男人的声音,不过语气带有几分恼怒:“你好!请问你是段伏枥吗?”


    对方已经指名道姓了,刹那间也想不起否认,脱口而出:“是啊,你是哪位?”


    不过对方显然没打算回答段伏枥的问题,直接劈头盖脸地问到:“你那块开发板是哪里来的?”


    段伏枥一下子没有反应过来,二丈摸不着头脑:“什么开发板?”


    “就是你们现在所用的TCC7901的开发板!我问的是,这块开发板究竟是哪里来的?”


    为什么还要问开发板的来源?究竟对方是谁?段伏枥忍不住问到:“你是谁啊?”


    这回对方倒是回答了提问:“我这边是深圳的telechips!整个大陆的技术支持都是我们在做。你知道吗,你的邮件给我们带来了多大的困扰!总部直接质问,这究竟是怎么回事!我问你,你这开发板是从哪里来的?我们这里根本就没有你们的备案!”


    开发板是武总给的,段伏枥也只是知道是从台湾拿来的,但具体的情形其实自己知道的也并不是很详细。但即使如此,能不能跟对方说来自于台湾,自己也把握不准。段伏枥很想挂掉电话,但害怕因此无法获得原厂的支持,只好含糊辞词,希望能蒙混过关:“这个是上面给我的,我也不清楚……”


    “你们上面是在哪里弄来的?”


    “这个我真的不知道!”对方今天显然要知道答案,蒙混看来是过不了关了,只好说到:“我给你我们上头的电话,你直接问他吧!”


    放下电话,段伏枥长舒了口气。转念一想,害怕武总到时候接到电话不知所措,赶紧趁对方还没给武总电话前先通风报信:“武总啊,刚刚telechips深圳这边给我电话,问那开发板的来源,我什么也没说。但他们好像一定要知道从哪里来的,所以我让他们找你了。可能等一会他们会打你电话。”


    武总有点嗔怒:“哎呀,你怎么老给我捅这些娄子?好了,好了,你先干活吧,这些我到时候再做处理。”


    放下电话,段伏枥已经满头是汗:怎么感觉自己跟做贼一样呢?段伏枥还是经验有所欠缺,像这样的事情是很普遍的。一个芯片公司如果市场很大的话,那么每个大区域都会有相应的代理商或分公司负责相应的事务,互相之间是不能窜货的。所谓的窜货,也就是说这些货只能在特定的区域里面销售,如果发送到别的区域,那么便是窜货。这个术语在饮料行业出现的频率是最高的,因为经常出现某个区域的进货价要比其它区域的要便宜,一些商人便喜欢在那个区域的代理拿货,然后到别的区域进行售卖。如果平时仔细观察,会发现某些饮料在瓶身上经常能看到类似的标识:“本饮料只在xx地区销售”,或是“本中奖活动只在xx地区进行”,说的便是这么一回事。另一个明显的例子便是书籍了,特别是名家的作品,经常在内页中能看到:“本作品只允许在中国除香港、澳门和台湾地区发售”。这也是没办法的事,比如说,香港的版权费比较高,所以香港书籍的定价往往比大陆高很多,如果大陆版本能够在香港发售,那么对于香港的出版业是一个很大的打击。


    只是在电子行业,特别是芯片方面用得不多,因为像芯片的特定区域都比较大,基本上是整个大陆区域。而像段伏枥这样从台湾直接拿开发板,直接绕开大陆的原厂,则是少之又少。


    还有另一点比较重要的是,像开发板啊,BSP包代码都是比较重要的东西,原厂需要审核客户的资格,符合要求后签订NDA才能给予。虽然大陆这边很多公司视NDA为儿戏,应该保密的东西弄得满城皆知,但这毕竟是大陆心照不宣的秘密。可现在段伏枥将麻烦弄到了韩国的原厂,对方一查发现安勒斯根本就没有备案,那么这些东西是从哪里获取的呢,是不是涉及到泄密?从这个角度去考虑,就不难理解为何深圳telechips会如此着急,毕竟韩国方面以此施压啊!


    武总一个下午都在和其它同事开会,临近下班的时候才下到11楼。一见但武总,段伏枥着急地问到:“深圳的telechips有没有给你打电话啊?”


    武总佯怒到:“当然有啦,还很急呢!你老是干这样的事情,搞得每次都要我给你擦屁股!”


    这件事段伏枥也觉得自己做得并不够漂亮,内心确实也有点愧疚,对武总的话语也不以为意,只是“哦”了一声。


    武总看到段伏枥这表情,估计他心情也不好受,安慰到:“没事啦,这个我已经帮你摆平了,你就放心去做吧!”


    武总是怎么搞定的,或是什么样的说辞,段伏枥其实很感兴趣,但由于觉得自己刚刚做错了事,却不太好问。突然,段伏枥想起了什么,问到:“那以后有问题,我应该问谁?是不是没人可问了?”


    没想到武总自信满满地说:“你放心好了,过几天我找个人给你!”


    过几天找个人?可现在出原题图就要确认啊!只是不小心闹出这么一场风波,自己也不好意思再深究下去。只是武总的这番话,听起来似乎是件小事,但怎么给人的感觉是那么不靠谱啊?           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述

这篇关于那些年啊,那些事——一个程序员的奋斗史 ——71的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301238

相关文章

71-java 导致线程上下文切换的原因

Java中导致线程上下文切换的原因通常包括: 线程时间片用完:当前线程的时间片用完,操作系统将其暂停,并切换到另一个线程。 线程被优先级更高的线程抢占:操作系统根据线程优先级决定运行哪个线程。 线程进入等待状态:如线程执行了sleep(),wait(),join()等操作,使线程进入等待状态或阻塞状态,释放CPU。 线程占用CPU时间过长:如果线程执行了大量的I/O操作,而不是CPU计算

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做

黑马程序员---线程并发库

软件包 java.util.concurrent 在并发编程中很常用的实用工具类。 请参见:            描述 接口摘要BlockingDeque<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及

黑马程序员---多线程

TraditionalTread 传统线程技术回顾 创建线程的两种方式: thread3中,同时创建了Thread的子类和Runnable,那么会优先执行Thread的子类,因为Runnable的代码被当做参数传到了Thread类里,Thread子类的run方法又覆盖了父类的方法,所以会执行Thread子类的代码。 package cn.itcast.heima;public class T

黑马程序员---代理

分析代理类的作用与原理及AOP的概念 代理的概念与作用  1.已经写好一个类,现在要为这个类增加一些功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 现在我们写一个代理类: 保持了原来那个类的功能,又增加了你现在需要的功能。 主函数调用的时候,直接调用代理类就行了。 这就是代理类的功能。   2.编写一个与目标类具有相同接口的代理类,代理