韦东山yy公开课笔记(2)--各种杂的问题

1. 编译器的版本和glibc库有对应关系吗,如何查看glibc的版本(glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc),编译器是不是只带glibc被编译生成的 .so 文件,如果自制系统调用的话是不是还要下载glibc然后重新编译

答:一般来说制作编译器的时候就会选定glibc,所以你得到的编译器里面含有glibc的库,既有so文件,也有.a文件。编译器和Glibc都在更新的,新编译器一般不能使用过老的glibc。但是它们之间的版本关系,我也不了解。

自制系统时,一般直接复制编译器自带的lib就可以了,可以参考第1期视频的根文件系统部分。

2. 在中断处理函数里主要做什么?有哪些不适合在中断处理函数里处理?希望可以举个例子

答:中断处理函数就是“尽快地处理中断事件”。太过耗时的、不是很紧急的事情,不要放在中断函数里。比如网卡中断程序,它只是尽快地把数据从网卡上读入内存,并不做进一步的分发处理。这后续的处理,是通过触发一个工作队列或是唤醒内核线程来做的。

3. 老师怎么和usb-hid设备通讯实现读写设备 任意字节长度?内核hiddev和hidraw能实现任意字节读写吗?还是自己写一个方便些?思路是怎样的?

答:硬件上肯定不支持任意长度的读写,驱动里一般都会根据硬件要求发起多次传输。

对于hiddev,它根本不支持write操作;对于hidraw,它的写操作依赖于其他驱动。所以你还是自己写比较方便。主要的难点在于USB设备的概念:地址、Endpoint、一次传输的长度,把这些都弄清楚了,你可以用libusb写APP即可,不需要写驱动。如果非要写驱动,也只是在驱动的read、write里启动数据传输,框架就是一个简单的字符设备驱动,数据传输方面可以参考第2期输入子系统里对鼠标的操作。

4.对于调试来说,目前使用什么工具最合适,对于uboot使用print太过麻烦吧,而且烧写程序过于麻烦。老师,我看第二期视频,发现输入子系统和总线设备驱动模型有点乱,老师能说说他们之间的联系和区别吗?

答:我是使用print,这方便;你事先分析了程序,需要加打印的地方不会太多。只有碰到疑难问题无法分析时,我才用OPENJTAG。

输入子系统和总线设备驱动模型一点关系都没有,“总线设备驱动模型”可以认为只是一个技巧:你定义一个device,再定义一个driver,它们的名字相同时,drvier的probe函数就被调用──它只是用来把驱动程序分为2个文件,一个存放硬件相关的代码,另一个存放跟硬件关系不大的代码。

5.是否所有的ARM芯片都是上电之后自动将NAND的前4K拷贝至芯片本身的内存

答:只有三星的某几款芯片是这样。支持NAND启动的芯片,实质上也有这一个过程:片上固化的程序读取NAND到内存中,然后启动。

6.linux启动代码中物理地址到虚拟地址是怎么建立关系的

答:原理性的东西,可以看第1期的MMU实验,它是裸板;在Linux里怎么建立映射,我也没有去深究过。

7.不好意思 链接地址还是不太懂。

答:把第1期视频的程序从LED开始练习一下,很快就明白了。

8.用摄像头采集数据 如何实现录像的功能

答:一般是先压缩,然后写入文件。

9.毕业班视频是看完第二期再看吗

答:毕业班视频里BOOTLOADER部分,可以看完第1期视频后就看;其他部分是看完第2期再看。

毕业班视频用来检验第1、2期的学习成果。

10大学里怎么提高自己的项目经验,因为不是相关专业的,只是凭借自己兴趣, 也没有相关项目

答:可以自己构思一个产品,然后去实现它。比如用开发板实现某个功能。

11.为什么反汇编里显示0x56000000是立即数 直接存入寄存器,而0x123以后 反而成据?

答:看看这篇文章:http://bbs.chinaunix.net/thread-2317716-1-1.html

12.韦老师,请问下为什么SP指针要从4092处开始压栈而不是0+4地址处开始呢?

答:0开始处有代码啊,你在0地址处压栈被就破坏程序了。

SP是向下增长,还是向上增长,其实可以通过编译选项来指定。只是我们经常使用向下增长。

13.PC指针和SP指针的区别

答:CPU去PC所指向的内存读取数据,这个数据作为指令来执行;

SP指向一块空闲的内存,这块内存用来暂时存放数据,这些数据是程序执行过程中生成的,比如局部变量。

14.老师能否讲讲Uart_stdio的具体实现 之前只是一笔带过 感觉看不到 里面的原理

答:基本上就是一个变参函数,我也不太懂,只是移植内核的printk源码。

15.有些ARM9 CPU不止有内部RAM和ROM,UBOOT如何改写呢

答:这个问题太方泛了不好回答,简单地说:UBOOT的目的是读取并启动内核。实现这个目标的过程中,涉及哪些硬件就去操作哪些硬件。

大概的框架在毕业班视频“自己写bootloader”学到。

16.老师,内核精景分析这本书比较早了 现在还有什么研读的必要吗?写驱动需要

对内核了解到什么程度?

答:是比较早,但是原理一直没变过。它可以作为书桌手边上的工具书,对某块内容想深入理解时,就翻翻它。这书涉及的内容都讲得很深入、细致。

17.老师对于嵌入式培训怎么看?尤其哪些动不动就10000块,上3,4个月课程的机构?

答:去上培训班,我个人认为只有2个好处:自制能力不强的人可以得到一个学习气氛,有面试机会。

单就学习知识来说,培训班的效果没有看视频好。

18.视频监控项目实现手机+PC同传输视频信息,论坛有人发布QT精简版,能发布带录吗

答:发布“带录”是什么意思?

19.openjtag+ok6410,擦除nand命令失败
所有连线连好后,连接open ocd,然后telnet。红色为敲入的命令!但是显示不成功!(如图)

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps3CE0.tmp.png

答:openocd的命令行对MLC的支持并不完善,换句话说在openocd不支持MLC NAND。

20.nandflash第0块损坏了 怎么办

答:厂家保证它不会坏,要真坏了,① 它就不能作为启动芯片,即板子只能使用NOR启动。②换一个NAND芯片吧

21.新人报道,在学习东山哥的ok6410的裸板程序,第20个irq的裸板程序,直接copy东山哥的.bin文件,发现串口上出现的字符是乱码,不知道哪位大虾遇到过这种问题没,上个图,

整个晚上,没弄懂。

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps3CE1.tmp.png

答:我没有碰到过,一时间也不知道原因。你可以精简程序,把代码尽可能减少,然后找原因。

22.像图一这样写,不能正常初始化2440存储管理器。其它不变换成图二这种写法,就成成功初始化2440存储管理器。请问问题出在哪里?提前谢谢

不能正常初始化

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps3CE2.tmp.png

能正常初始化:

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps3CF2.tmp.png

答:涉及位置无关码,第2期里“第29课第3.3节_裸板调试之JTAG调试命令行调试”以这个程序为例作了讲解。

23.韦老师毕业班自己写bootloade似乎没有管nand ecc
在拷贝bootloader和kernel到sdram中时,nand flash里面自己出错了怎么办?

答:为了精简程序,我没有理会ECC。实际产品中,必须使用ECC。

老师 帮忙看看 连接脚本问题 编译出bin文件 700多m:

这是链接脚本

SECTIONS {

firtst   0x00000000 : { head.o init.o nand.o}

second    0x30000000 : AT(4096) { interrupt.o serial.o rtc.o main.o }

. = 0x31000000;

.text             : { *(.text) }

.rodata ALIGN(4)  : {*(.rodata)}

.data ALIGN(4)    : { *(.data) }

.bss ALIGN(4)     : { *(.bss)  *(COMMON) }

}

答:.text, .rodata, .data也要加上AT(xxx),否则就会有700M多。因为不加AT时,默认的AT值就跟链接地址一样。

比如first段放在0,.text段放在0x31000000,不就是700多M了吗?

24.参照韦老师第三期视频中的 声卡裸板 程序,我自己写了个 摄像头的裸板程序,遇到些问题 没搞清楚 ,敬请解答!

韦老师的裸板程序 是下载到 NADN FLASH 中启动后 ,然后通过重定位到 start 处 ,start 应该是 lds 文件中指定的 33f80000,然后中断发生的时候

硬件就会自动跳到 33f80018 处执行 HandleIRQ ,不知道我这样理解对不对?

答:不对,中断发生时,必定是从0x18开始执行。NAND启动时,前4K代码会被复制到片内RAM里,片内RAM地址0x18处就是中断向量入口,在那里会有跳转指令,跳去执行SDRAM中的中断处理函数。

然后,我自己的程序 是直接下载到 SDRAM 32000000 处(因为我使用的另一个 Uboot 有个命令是直接下载运行 bin 文件), lds 指定的地址为 32000000,

我去掉了 head.s 启动程序中的 重定位部分。 请问,这种情况下发生了中断后 硬件 会跳到哪里去执行? 是 32000018 地址吗?

答:回答同上,必定从0x18开始执行。你在UBOOT下载到32000000运行时,程序中应该把32000000开始的部分代码复制到0地址去,这样才可以使用中断。

如果有 OV7740 的裸板测试程序 可以 发给我吗 ,不胜感激!

[email protected]

答:没有OV7740的裸板测试程序。

25.板子mini2440 屏x35,把lcd的驱动程序系在进去后刚开始会显示一行字“

Please press Enter to activate this console. ”过几秒钟之后就成了绿屏  有谁遇到过这种现象吗?

答:绿屏?我倒是没有碰到过,你在/etc/inittab里把tty0或tty1那行删除掉试试,然后重启系统应该可以看到LCD没有文字显示。启动后,可以用 echo hello > /dev/tty1 测试LCD。

26.请问我按照第0课第2节用u-boot烧裸板程序lcd.bin,烧写正常,但拨到nand运行时,屏上只显示一些色条,是怎么回事,烧led_on.bin也是灯不亮,但烧leds.bin又正常,灯轮流闪,这是怎么回事

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps3CF3.tmp.png

答:led_on.bin的问题,你先看看源码,确认一下LED引脚跟JZ2440是否对应。

LCD的问题,你烧后重启,串口上有无打印?有打印的话,我想你应该烧写:lcd_3.5_4.3.bin。原来的lcd.bin只支持3.5寸LCD。

27.linux内核安全的工作主要干些什么呢,像什么样的公司会招聘这个岗位,需要懂哪些东西,有没大神知道的

答:我对这个无了解。

28.跟着视频学完三期视频,linux的水平到什么程度?以后可以自己完成linux的驱动吗? 另外关于l做底层驱动inux方面的知识都应该掌握哪些?

答:学得好的话,完全可以说有2、3年工作经验了。如果你再换一个板子来练手,把三期视频的例家在新板上都自己写出来,那么一般的LINUX工作基本上没有你不会的了

做底层,需要会看芯片手册、看得懂原理图,然后把第2期学完并且会融会贯通。

29.mini2440支持USB摄像头,是不是所有的USB摄像头都支持的呢,我现在要准备学习视频监控,所有想了解的多一点,不知道mini2440支持的怎么样,那些带有夜视功能的USB摄像头也是不是都支持的呢

答:符合UVC规范的摄像头,都支持。

是否带夜视,只是硬件的性能,跟是否UVC无关的。很多UVC摄像头也带夜视。

30.有同学还记得老师在哪个章节讲过mkdosfs工具的,现在在做块设备驱动程序,一直提示找不到这个命令。

答:网上搜dosfstools_2.11.orig.tar.gz

31.我现在的困惑是:我正在学习韦老师二期的驱动,但是现在老师要我做GPS数据采集,我想的是先学完驱动之后再去完成我老师的事儿,但是我的老师不理解,说采集数据那块和驱动没有关系,叫我直接去做GPS数据采集,我现在又不知道如何做?

答:我想你们用的GPS设备是串口接口的吧?那确实跟驱动无关,你只需要在网上搜搜怎么写串口程序即可。

时间: 2024-10-28 21:30:32

韦东山yy公开课笔记(2)--各种杂的问题的相关文章

韦东山yy公开课笔记(1)--各种杂的问题

1,第四期的智能猫眼会有打电话和发短信的功能吗? 答:会有打电话功能,硬件上支持打电话就会支持发短信,只是软件上是否实现发短信现在未定.因为短信延迟太严重,不是可靠的. 2,请问关于makefile中的很多设置项,像段啊什么的?是什么意思呢?需要深入学习吗? 3 答:对于裸板才需要我们自己管理“段”,这并不是什么很高深的知识,看过涉及重定位的裸板视频就可以了解清楚了.至于其他设置项,基本上就是编译选项而已.Makefile本身并不复杂,也不应该成为学习的拦路虎:用于裸板的Makefile,它是非

韦东山yy公开课笔记(2)--汇编,段,栈,重定位/链接地址,位置无关吗

1. 要不要学习汇编 可以只懂一点,工作中基本不用,一旦用就是出了大问题 ldr : load 读内存 ldr r0, [r1]  : r1里存放的是地址值, 去这个地址读取4字节的内容,存入r0 str : stroe 写内存 str r0, [r1]  : r1里存放的是地址值, 把r0里的4字节数据存入这个地址 所有的汇编.C程序也好,终极目标就是:读写某个地址 2. 程序为何要分为代码段.数据段.BSS段 程序的指令等是只读的,可以把它们归为一类,以便运行时可以放在ROM等设备上, 当然

斯坦福ML公开课笔记13B-因子分析模型及其EM求解

转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/37559995 本文是<斯坦福ML公开课笔记13A>的续篇.主要讲述针对混合高斯模型的问题所采取的简单解决方法,即对假设进行限制的简单方法,最后引出因子分析模型(Factor Analysis Model),包括因子分析模型的介绍.EM求解等. 斯坦福ML公开课笔记13B-因子分析模型及其EM求解,布布扣,bubuko.com

JS公开课笔记一

JS公开课笔记 没特别说明就是和Java语言一样. JS变量:弱类型语言 1.在JS中,true表示1,false表示0.和Java不一样. 2. var y: 提示undefined: 3.如果alert(y+10)://提示NaN 表示 非法值. 4.JS没有字符和字符串区别,所以使用""和'' 是一样. 5. var arr = new Array(3); arr[0] = 'abc'; arr[1] = 123; arr[3] = false; alert(arr); 是正确的

Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化”

Coursera公开课笔记: 斯坦福大学机器学习第七课"正则化" NLPJob 斯坦福大学机器学习第七课"正则化"学习笔记,本次课程主要包括4部分: 1) The Problem of Overfitting(过拟合问题) 2) Cost Function(成本函数) 3) Regularized Linear Regression(线性回归的正则化) 4) Regularized Logistic Regression(逻辑回归的正则化) 以下是每一部分的详细解读

Andrew Ng机器学习公开课笔记 -- Mixtures of Gaussians and the EM algorithm

网易公开课,第12,13课 notes,7a, 7b,8 从这章开始,介绍无监督的算法 对于无监督,当然首先想到k means, 最典型也最简单,有需要直接看7a的讲义   Mixtures of Gaussians 如果要理解Mixtures of Gaussians,那先回去复习一下Gaussians Discriminant Analysis,高斯判别分析 首先高斯判别分析是生成算法, 所以不会直接拟合p(y|x), 而是拟合p(x|y)p(y), 即p(x,y) p(y)符合伯努力分布,

斯坦福ML公开课笔记14——主成分分析

上一篇笔记中,介绍了因子分析模型,因子分析模型使用d维子空间的隐含变量z来拟合训练数据,所以实际上因子分析模型是一种数据降维的方法,它基于一个概率模型,使用EM算法来估计参数. 本篇主要介绍PCA(Principal Components Analysis, 主成分分析),也是一种降维方法,但是该方法比较直接,只需计算特征向量就可以进行降维了.本篇对应的视频是公开课的第14个视频,该视频的前半部分为因子分析模型的EM求解,已写入笔记13,本篇只是后半部分的笔记,所以内容较少. 斯坦福ML公开课笔

斯坦福ML公开课笔记13A——混合高斯模型、混合贝叶斯模型

本文对应公开课的第13个视频,这个视频仍然和EM算法非常相关,第12个视频讲解了EM算法的基础,本视频则是在讲EM算法的应用.本视频的主要内容包括混合高斯模型(Mixture of Gaussian, MoG)的EM推导.混合贝叶斯模型(Mixture of Naive Bayes,MoNB)的EM推导.因子分析模型(Factor Analysis Model)及其EM求解.由于本章内容较多,故而分为AB两篇,本篇介绍至混合模型的问题. 很久没有写这个系列的笔记了,各种事情加各种懒导致的.虽然慢

斯坦福ML公开课笔记15—隐含语义索引、神秘值分解、独立成分分析

斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析). PCA是一种直接的降维方法.通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题,包含PCA的一个应用--LSI(Latent Semantic Indexing, 隐含语义索引)和PCA的一个实现--SVD(Singular Value Decomposition,神秘值分解). 在SVD和LSI结束之后.关于PCA的内容就告一段落. 视频的后半段開始讲无监督学习的一种--IC