9.11号公开课答疑汇总

1. 编译器的版本和 glibc 库有对应关系吗,如何查看 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 以后 反而成据?


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。红色为敲入的命令!但是显示不成功!(如图)
  Y1.png (32.17 KB, 下载次数: 0) 
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 文件,发现串口上出现的字符是乱码,不知道哪位大虾遇到过这种问题没,上个图, y2.png (7.72 KB, 下载次数: 0)  个晚上,没弄懂。

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps3CE1.tmp.png
答:我没有碰到过,一时间也不知道原因。你可以精简程序,把代码尽可能减少,然后找原因。


22.像图一这样写,不能正常初始化2440存储管理器。其它不变换成图二这种写法,就成成功初始化2440存储管理器。请问问题出在哪里?提前谢谢
不能正常初始化    y3.jpg (39.48 KB, 下载次数: 0) 

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

能正常初始化:    y4.jpg (41.53 KB, 下载次数: 0) 
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 的裸板测试程序 可以 发给我吗 ,不胜感激!

答:没有 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又正常,灯轮流闪,这是怎么回事
  y5.png (15.57 KB, 下载次数: 0) 
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设备是串口接口的吧?那确实跟驱动无关,你只需要在网上搜搜怎么写串口程序即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值