bigbat 发表于 2019-10-4 11:40

我的单片机开发之路(五)

<p>开源界的至尊应该数的到Linux了。在2005年的时候我从市场上买了一块S3C44B0X的开发板。这块板子的CPU是ARM 7内核的。那时候三星公司已经停产S3C44B0X了。整个行业也进入到了ARM9的时代。ARM7和ARM9就差了一代,但是结构体系却差别很大,一个是冯诺依曼结构,另一个是哈佛结构。ARM9的结构体系也相对比较规范,为什么是&ldquo;相对&rdquo;呢?因为ARM 9体系很多设计也不是很&ldquo;规范&rdquo;。这就造成了CPU的&ldquo;碎片化&rdquo;。不同厂家生产的ARM9内核的芯片在设计上会有一些差别,没办法你就得熟悉各家的产品。如:开机代码中的内存管理,三星公司的芯片在启动后需要进行内存重新映射(REMAP),而ATMEL的芯片采用的是内存分段的机制。如果对碎片化没什么概念,那你可以看看ANDROID的手机,好象没有哪家公司能够给你的手机升级系统主版本的。ANDROID5的手机是没办法升级到ANDROID6的。当然技术总是在不断进步的,对于ARM Cortex的内核就比较成熟了。软件在不同的厂家中起码CMSIS这一层是通用的。体系结构也差不多。只是外设的操作各厂家有一点差别。<br />
买S3C44B0X是为了学习ucLinux。这是一个去掉MMU的linux版本,运行在没有MMU硬件模块的CPU当中,如STM32F103上面都可以运行ucLinux。当然有MMU的情况下也可以使用MMU管理内存。Linux是一种大型的操作系统。其内核运行时需要的资源比较多,其任务管理也比较复杂,甚至可以动态的装卸任务进程。当时因为不熟悉linux开发,那时甚至都不知道怎么编译linux系统。只要稍微一点修改就要全新的编译整个linux系统,编译一次系统大约需要三个小时的时间。后来专门弄了台电脑作为uclinux开发机。就这样我大概坚持了半年。不过也学会了如何编写简单的linux驱动、如何裁剪linux内核、如何编写linux上的串口程序。后来用的上的只有串口程序和网络程序。对于一个没有linux专业背景的公司,如果涉及到移植新的MCU型号或涉及到复杂驱动开发,我是不推荐使用Linux作为运行在嵌入式MCU上的操作系统的,这个系统真的很复杂!当然你公司就是专业干linux底层开发的除外。Linux板级的BSP通常都是一些专业公司开发的。在BSP上做做应用还行,要是想移植和升级那你就要小心了!可能一个看上去的&ldquo;小问题&rdquo;都会使你的项目报废,或者投入巨量的资源耗费很长的时间。也可能你的运气比较好,所以我说这些只做参考。uclinux的学习到2006年的时候由于需要钻研PIC单片机停了下来,直到2013年才又开始继续。那年的冬天我家里的TP-Link路由器老是有非授权的用户。最初我将路由器的上网密码修改了,可是没过几天我发现我的路由器的管理界面进不去了。于是买了一台华为的路由器,把TP-link的路由器系统给刷了,然后通过华为的路由器接入网络。可是没几天我的TP-link路由器又进不去管理界面了,华为路由一直没事。我有点不服气!就买了一块AR9331开发板,板子跑的是OpenWrt系统。开始专研开源OpenWrt系统。后来我把OpenWrt系统板子使用原来TP-link的SSID名称,替换到了TP-link路由器。很可惜!再也没有发现这台路由器被攻击了。但是看到OpenWrt系统非常丰富的资料,又激起了对嵌入式linux的兴趣。这之后又陆续买了几块开发板,其中还包括TI的&ldquo;波波狗&rdquo;。由于主要芯片都是BGA封装的,都没有自己设计PCB自制板子。看来BGA封装成了一个不易突破的&ldquo;坎&rdquo;!<br />
&nbsp;</p>

chenbingjy 发表于 2019-10-4 15:44

<p>顶一个。</p>

huangwarrenus 发表于 2019-10-17 17:12

<p>我也用过AR9331和OpenWrt系统</p>

1765524655 发表于 2021-8-26 19:52

<p>顶一个&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
页: [1]
查看完整版本: 我的单片机开发之路(五)