昨天刚面试的联发科,今天就来消息了
分享一下自己面试联发科的感受
面试总共三面
第一面是两人一起面,具体问题如下:
- 我看你做了内核移植,交叉编译链是什么,那个公司的,什么版本?
答:免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora。作为学习,答到以上三个就行。
- 能说一下具体操作系统移植的过程么?
答:内核启动流程:uboot->kernel->rootfs uboot基本都不会做修改,直接拿来烧在板上即可,uboot主要在调试模式修改一些环境变量,包括tftp的下载地址(serverip、ipaddr),包括bootcmd传给内核的参数,传给根文件系统的参数bootargs,并熟悉相应的命令使用(nand scrub、set pri、boot);内核源码编译,内核参考开发板的参数进行修改(开发板和母版的参数差异),make menuconfig进行模块选择,ulmage的制作;然后内核利用bootargs参数进行根文件系统启动,再就是根文件目录树的创建及其基本文件的创建。
(以上基本就能应付,很少有面试官深入,因为应届毕业生做arm移植的太少了=-=,更深的问题:为什么内核初始化地址是0x30008000,ulmage和zlmage的差别,make menuconfig添加模块的依据,)
- 移植遇到比较困难的问题
我说我当时移植QT的库时 ,发现版子上分区内存不够,当时也不知道怎么解决 就去学习分区挂载的知识,用df查看分区,发现有分区但是没挂载,导致空间不够,但是又不想在系统启动每次手动去挂载,于是就研究根文件启动init的过程,在配置文件inittab添加挂载命令,系统就会自启动并挂载分区了。
- 接着问,如果开发板上只有十兆空间,但是你的移植的QT库有二十兆,你会怎么做?
我说的扩容,他说除了扩容呢,我接着说移植的文件中有一个stripped属性,用strip命令去除库文件中的符号表,会小很