“Jz2440LearningFAQ”的版本间的差异
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献) (优化版本,添加专题答疑内容) |
|||
第2行: | 第2行: | ||
* [[ VMwareAndUbuntuNetworkSetupGuide | 开发板、PC、Ubuntu的网络环境搭建 ]] | * [[ VMwareAndUbuntuNetworkSetupGuide | 开发板、PC、Ubuntu的网络环境搭建 ]] | ||
* [[ ARM%E8%A3%B8%E6%9C%BA%E5%8A%A0%E5%BC%BA%E7%89%88 | 新1期维基教程]] | * [[ ARM%E8%A3%B8%E6%9C%BA%E5%8A%A0%E5%BC%BA%E7%89%88 | 新1期维基教程]] | ||
− | * [https:// | + | * [https://www.bilibili.com/video/av22022847?p=14」 常见问题汇总] |
* [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328956&idx=1&sn=80841941d9abfde33e31b037485eba18&chksm=839769b6b4e0e0a0660c5910a6b364bc75a5cf5e8523ee50e61c35b437345ef2383054960ab0#rd DNW 驱动安装方法] | * [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328956&idx=1&sn=80841941d9abfde33e31b037485eba18&chksm=839769b6b4e0e0a0660c5910a6b364bc75a5cf5e8523ee50e61c35b437345ef2383054960ab0#rd DNW 驱动安装方法] | ||
* [https://jingyan.baidu.com/article/0f5fb09930de116d8334ea12.html Win8 (或以上系统)安装 EOP「EasyOpenJTAG」 时出现"文件哈希值..."的解决方法] | * [https://jingyan.baidu.com/article/0f5fb09930de116d8334ea12.html Win8 (或以上系统)安装 EOP「EasyOpenJTAG」 时出现"文件哈希值..."的解决方法] | ||
第14行: | 第14行: | ||
* [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328600&idx=1&sn=ef08bb2b43ea9bde4c62acc11e5beccc&chksm=83976f52b4e0e644ba66e7c531fa1242c15b28b9e69b5c0b3486abd35f146e4f59f821b903e6#rd 挂载根文件系统出现 "Kernel panic..." 的解决方案] | * [https://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328600&idx=1&sn=ef08bb2b43ea9bde4c62acc11e5beccc&chksm=83976f52b4e0e644ba66e7c531fa1242c15b28b9e69b5c0b3486abd35f146e4f59f821b903e6#rd 挂载根文件系统出现 "Kernel panic..." 的解决方案] | ||
− | =为什么 Ubuntu 不能在 windows 通过 SSH 远程登录?= | + | = FAQ = |
+ | ==Ubuntu的登录用户名和密码== | ||
+ | : 我们提供的所有的Ubuntu的用户名和密码统一如下: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | 用户名: book | ||
+ | 密码: 123456 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==为什么 Ubuntu 不能在 windows 通过 SSH 远程登录?== | ||
# 首先得让 ubuntu 与 window 之间互相 PING 通 | # 首先得让 ubuntu 与 window 之间互相 PING 通 | ||
# ubuntu 开启了 SSH 服务,使用我们的 ubuntu 9.10、ubuntu 16.04 都已开启 SSH | # ubuntu 开启了 SSH 服务,使用我们的 ubuntu 9.10、ubuntu 16.04 都已开启 SSH | ||
− | =Ubuntu 16.04 登录密码是什么?= | + | ==Ubuntu 16.04 登录密码是什么?== |
: 您好,只要是韦东山提供的 Ubuntu 系统,不管是 Ubuntu 9.10 或是 Ubuntu 16.04 | : 您好,只要是韦东山提供的 Ubuntu 系统,不管是 Ubuntu 9.10 或是 Ubuntu 16.04 | ||
: 它们用户名和密码都是: book ;123456 | : 它们用户名和密码都是: book ;123456 | ||
: 没有设置 root 密码,需要你通过命令 sudo passwd root 进行设置。 | : 没有设置 root 密码,需要你通过命令 sudo passwd root 进行设置。 | ||
− | =JZ2440 开发板触摸不灵敏= | + | ==JZ2440 开发板触摸不灵敏== |
: 先尝试给 jz2440 开发板校准:打开开发板串口,系统启动后输入命令: | : 先尝试给 jz2440 开发板校准:打开开发板串口,系统启动后输入命令: | ||
− | + | <syntaxhighlight lang="bash"> | |
+ | $ rm /etc/pointercal | ||
+ | </syntaxhighlight> | ||
: 重启开发板,依次点击 LCD 出现的 5 个「十字架」。如果问题依旧,多半是硬件问题。请联系客服解决。 | : 重启开发板,依次点击 LCD 出现的 5 个「十字架」。如果问题依旧,多半是硬件问题。请联系客服解决。 | ||
− | =如何对 JZ2440 进行格式化?= | + | ==如何对 JZ2440 进行格式化?== |
: 进入 uboot 界面, 输入 nand scrub 回车,然后输入 y 回车 | : 进入 uboot 界面, 输入 nand scrub 回车,然后输入 y 回车 | ||
− | =摄像头不显示图像= | + | ==摄像头不显示图像== |
: 不要用 xawtv ,跳过这节视频的实验,只看视频了解调用过程即可 | : 不要用 xawtv ,跳过这节视频的实验,只看视频了解调用过程即可 | ||
: 我以前使用 xawtv 的目的是想让学员快速看到效果,后来发现 xawtv 不稳定、挑机器,反而浪费学员时间 | : 我以前使用 xawtv 的目的是想让学员快速看到效果,后来发现 xawtv 不稳定、挑机器,反而浪费学员时间 | ||
: 后续章节的内容,完全覆盖 xawtv 的内容 | : 后续章节的内容,完全覆盖 xawtv 的内容 | ||
− | =视频播放= | + | ==视频播放== |
: 之前的视频很流畅,仅 cmos 部分的视频很卡 | : 之前的视频很流畅,仅 cmos 部分的视频很卡 | ||
: 换 http://cn.haihaisoft.com/huplayer.aspx 里的单显卡播放器 “海海软件HUPlayer” | : 换 http://cn.haihaisoft.com/huplayer.aspx 里的单显卡播放器 “海海软件HUPlayer” | ||
− | =xp 系统播放视频有声音无图像= | + | ==xp 系统播放视频有声音无图像== |
: 关闭硬件加速 具体步骤:桌面空白处点右键,“属性”=>“设置”=>“高级”=>“疑难问题”=>把“硬件加速”的滑动块拉到最左边 | : 关闭硬件加速 具体步骤:桌面空白处点右键,“属性”=>“设置”=>“高级”=>“疑难问题”=>把“硬件加速”的滑动块拉到最左边 | ||
− | =播放器异常停止(一般是win7,win10)= | + | ==播放器异常停止(一般是win7,win10)== |
: 点击: | : 点击: | ||
− | + | <syntaxhighlight lang="bash"> | |
+ | huplayer菜单 -> 选项 -> Tweaks -> Delete All License in your PC | ||
+ | </syntaxhighlight> | ||
: 然后发邮件找我们解绑后再登陆 | : 然后发邮件找我们解绑后再登陆 | ||
− | =手机/平板如何观看加密视频?= | + | ==手机/平板如何观看加密视频?== |
# 下载"海海软件 HUPlayer For Android 或 iOS "播放器。下载路径: www.drm-x.com -> 免费下载-下载海海软件HUPlayer,选择相应的手机播放器 | # 下载"海海软件 HUPlayer For Android 或 iOS "播放器。下载路径: www.drm-x.com -> 免费下载-下载海海软件HUPlayer,选择相应的手机播放器 | ||
# 把视频导入到手机,使用播放器打开视频输入用户名和密码 | # 把视频导入到手机,使用播放器打开视频输入用户名和密码 | ||
# 如果弹出"本账号只绑定一台电脑观看",则联系 weidongshan@qq.com 解绑附上你的视频用户名 | # 如果弹出"本账号只绑定一台电脑观看",则联系 weidongshan@qq.com 解绑附上你的视频用户名 | ||
# 我们不能保证手机正常观看,因为播放器不太稳定,不过我们保证 Windows 能正常观看。 | # 我们不能保证手机正常观看,因为播放器不太稳定,不过我们保证 Windows 能正常观看。 | ||
+ | |||
+ | =专题答疑= | ||
+ | ==NANDFLASH疑问== | ||
+ | ===NAND坏块疑问=== | ||
+ | : '''{{redtext|提问:}}''' | ||
+ | :: 1.nand的坏块是不是出厂的时候很难避免,厂家在出厂的时候标记好后,在nand中读写数据会自动避开坏块,如果擦除坏块标记,可能会带来数据完整性的问题吗? | ||
+ | :: 2.这样做出来产品会不会带来稳定性问题? | ||
+ | :: 3.如果一旦擦除坏块的标记,能恢复吗?怎么恢复? | ||
+ | : 解答: | ||
+ | :: 1.出厂时,对于坏块会标记,我们使用过程中如果发现坏了也要自己标记 | ||
+ | :: 2.没有“自动避开”,驱动程序中要擦除、读、写前,先判断该BLOCK是否正常,如果是“坏的”,那就避开 | ||
+ | :: 3.NAND FLASH一般用来保存视频等海量数据,就是因为它不可靠,不能用来保存程序等关键性数据,这些关键数据用NOR FLASH来保存但是对于廉价电子产品、消费电子产品,一般直接使用NAND:一是现在的工艺已经挺可靠,出现坏块的可能性降低;二是消费类电子产品,坏就坏了,坏了就修 | ||
+ | :: 4.一旦擦除坏块标记,能恢复吗?这问题我没找到相关资料,根据经常,坏块是无法擦除的。即:坏块的标记是无法简单擦除的;UBOOT里有一个nand scrub命令,它就是强制擦除整个芯片的;但是执行 nand scrub后再执行nand bad还是可以查出原先的坏块 | ||
+ | |||
+ | ===NAND FLASH初始化?=== | ||
+ | : '''{{redtext|提问:}}''' | ||
+ | :: 如果使用NAND方式启动开发板,在教程中韦老师说硬件会把Nand的4K内容拷贝到SRAM里,但是这个时候Nand都没有初始化,为什么能从Nand的前4K拷贝内容? | ||
+ | : 解答: | ||
+ | :: 1.nand不需要初始化,要初始化的是nand 控制器 | ||
+ | :: 2.SROM的程序(我们看不见),会使用最安全的参数来初始化nand控制器,然后去读前4K到片内内存 | ||
+ | : '''{{redtext|提问:}}''' | ||
+ | :: 不同页大小的NAND的读操作是不一样的,SROM怎么分辨? | ||
+ | : 解答: | ||
+ | :: NAND不同时,电路板上要设置配置引脚为高电平或低电平,比如NCON引脚。 | ||
+ | |||
+ | ==NANDFLASH疑问== | ||
+ | ==NORFLASH初始化疑问== | ||
+ | : '''{{redtext|提问:}}''' | ||
+ | :: 请问下裸机加强版 norflash的初始化在哪里啊?看视频好像直接就读写了 | ||
+ | : 解答: | ||
+ | :: 1.访问NOR时,本来也应该先设置时序;但是可以使用默认的时序。内存控制器内部对于CS0的时序,设置得非常保守,可以用于一切NOR FLASH | ||
+ | :: 2.NOR可以像内存一样直接读,但是不能直接写 | ||
+ | :: 3.视频中,有讲解怎么去设置NOR的时序让它的访问更快一点 | ||
+ | |||
+ | |||
+ | ==内存控制器疑问== | ||
+ | : '''{{redtext|提问:}}''' | ||
+ | :: 老师 你好 之前你的课程有提到过内存控制器负责挑数据 那么怎么挑的呢? | ||
+ | : 解答: | ||
+ | :: 比如 CPU想访问地址0x30000001的1字节数据,而SDRAM的位宽是32位,那么内存控制器会返回这4个地址上的4个字节数据:0x30000000,0x30000001,0x30000002,0x30000003。那显然,内存控制器会把第2个数据即地址0x30000001对应的数据返回给CPU | ||
+ | |||
+ | |||
+ | ==编译器疑问== | ||
+ | : '''{{redtext|提问:}}''' | ||
+ | :: 1.arm交叉编译器各版本的兼容性,如使用3.4.5编译的动态链接库,可否用4.4编译应用程序,并成功调用动态库? | ||
+ | :: 2.拿到一个陌生的arm版,如何从arm板上获取编译器版本,(原PC端开发信息丢失)? | ||
+ | : 解答: | ||
+ | :: 问题1: | ||
+ | ::: 我们首先要弄清楚指令集的概念: | ||
+ | :::: JZ2440使用arm9核,该CPU核使用的指令集是armv4; | ||
+ | :::: 所谓指令集,指的是汇编指令的版本;比如cortex a7等更先进的CPU核它支持某些新的指令,而ARM9不支持这些指令。 | ||
+ | :::: 你使用比较新的编译器时,它默认支持的指令集一般就不是armv4了; | ||
+ | :::: 如果不进行特别指定,编译出来的BIN文件烧在JZ2440上是无法运行的:因为CPU不认得某些新指令,无法执行某些新指令。 | ||
+ | :::: 一般来说,新的编译器会兼容老的芯片,但是需要告诉编译器,让它使用老的指令集来编译程序。 | ||
+ | :::: 所以,你当然可以使用4.4的工具链来编译jz2440程序,需要做的是:指定它,使用armv4指令集。 | ||
+ | ::::: 方法如下: | ||
+ | :::::: 使用3.4.5工具链时,我们这样编译:arm-linux-gcc -c -o led.o led.c // 默认使用armv4 | ||
+ | :::::: 使用4.4等工具链时,这样编译:arm-linux-gcc -march=armv4 -c -o led.o led.c // 默认不是armv4,需要手工指定 | ||
+ | :: 问题2: | ||
+ | ::: 相信你已经知道答案了, | ||
+ | ::: 首先要确定你的CPU核使用哪些指令集, | ||
+ | ::: 是否支持软件浮点, | ||
+ | ::: 你想使用glibc还是uclibc, | ||
+ | ::: 然后根据这些特性去找对应的编译器。 | ||
+ | ::: 注意:uclibc是glibc的简化版本,不过现在嵌入式的存储空间足够大了,基本不使用uclibc了。 | ||
+ | |||
+ | ==EOP疑问== | ||
+ | ===EPO测试方法=== | ||
+ | : 1. EOP通过USB线接到电脑上,EOP通过JTAG排线接到开发板上 | ||
+ | : 2. 开发板上电、断电,反复操作;同时观察EOP上的灯,看看灯有没有亮、灭; | ||
+ | :: 如果EOP的灯没变化,表示JTAG排线有问题 | ||
+ | : 3. 开发板上电,运行oflash,观察打印出来的CPUID | ||
+ | :: 如果CPUID是0,一般表示开发板没上电 | ||
+ | :: 如果CPUID是0xffffffff,那么把开发板上电时执行一次oflash、开发板断电时再执行一次oflash:观察CPUID有无变化 | ||
+ | :4. 经过上述操作,oflash还是未能识别出开发板,一般来说就是JTAG线坏了、EOP坏了、开发板坏了 | ||
+ | |||
+ | ===EOP支持调试模式吗?=== | ||
+ | : 解答: | ||
+ | :: 不支持, 我们EOP用的是JTAG协议,但不支持SWD调试模式 | ||
+ | :: 参考,[https://blog.csdn.net/ningjianwen/article/details/53230116 JTAG和SWD的区别]。 |
2019年12月6日 (五) 11:15的版本
学习常见问题及解决方案
FAQ
Ubuntu的登录用户名和密码
- 我们提供的所有的Ubuntu的用户名和密码统一如下:
用户名: book
密码: 123456
为什么 Ubuntu 不能在 windows 通过 SSH 远程登录?
- 首先得让 ubuntu 与 window 之间互相 PING 通
- ubuntu 开启了 SSH 服务,使用我们的 ubuntu 9.10、ubuntu 16.04 都已开启 SSH
Ubuntu 16.04 登录密码是什么?
- 您好,只要是韦东山提供的 Ubuntu 系统,不管是 Ubuntu 9.10 或是 Ubuntu 16.04
- 它们用户名和密码都是: book ;123456
- 没有设置 root 密码,需要你通过命令 sudo passwd root 进行设置。
JZ2440 开发板触摸不灵敏
- 先尝试给 jz2440 开发板校准:打开开发板串口,系统启动后输入命令:
$ rm /etc/pointercal
- 重启开发板,依次点击 LCD 出现的 5 个「十字架」。如果问题依旧,多半是硬件问题。请联系客服解决。
如何对 JZ2440 进行格式化?
- 进入 uboot 界面, 输入 nand scrub 回车,然后输入 y 回车
摄像头不显示图像
- 不要用 xawtv ,跳过这节视频的实验,只看视频了解调用过程即可
- 我以前使用 xawtv 的目的是想让学员快速看到效果,后来发现 xawtv 不稳定、挑机器,反而浪费学员时间
- 后续章节的内容,完全覆盖 xawtv 的内容
视频播放
- 之前的视频很流畅,仅 cmos 部分的视频很卡
- 换 http://cn.haihaisoft.com/huplayer.aspx 里的单显卡播放器 “海海软件HUPlayer”
xp 系统播放视频有声音无图像
- 关闭硬件加速 具体步骤:桌面空白处点右键,“属性”=>“设置”=>“高级”=>“疑难问题”=>把“硬件加速”的滑动块拉到最左边
播放器异常停止(一般是win7,win10)
- 点击:
huplayer菜单 -> 选项 -> Tweaks -> Delete All License in your PC
- 然后发邮件找我们解绑后再登陆
手机/平板如何观看加密视频?
- 下载"海海软件 HUPlayer For Android 或 iOS "播放器。下载路径: www.drm-x.com -> 免费下载-下载海海软件HUPlayer,选择相应的手机播放器
- 把视频导入到手机,使用播放器打开视频输入用户名和密码
- 如果弹出"本账号只绑定一台电脑观看",则联系 weidongshan@qq.com 解绑附上你的视频用户名
- 我们不能保证手机正常观看,因为播放器不太稳定,不过我们保证 Windows 能正常观看。
专题答疑
NANDFLASH疑问
NAND坏块疑问
-
提问:
- 1.nand的坏块是不是出厂的时候很难避免,厂家在出厂的时候标记好后,在nand中读写数据会自动避开坏块,如果擦除坏块标记,可能会带来数据完整性的问题吗?
- 2.这样做出来产品会不会带来稳定性问题?
- 3.如果一旦擦除坏块的标记,能恢复吗?怎么恢复?
- 解答:
- 1.出厂时,对于坏块会标记,我们使用过程中如果发现坏了也要自己标记
- 2.没有“自动避开”,驱动程序中要擦除、读、写前,先判断该BLOCK是否正常,如果是“坏的”,那就避开
- 3.NAND FLASH一般用来保存视频等海量数据,就是因为它不可靠,不能用来保存程序等关键性数据,这些关键数据用NOR FLASH来保存但是对于廉价电子产品、消费电子产品,一般直接使用NAND:一是现在的工艺已经挺可靠,出现坏块的可能性降低;二是消费类电子产品,坏就坏了,坏了就修
- 4.一旦擦除坏块标记,能恢复吗?这问题我没找到相关资料,根据经常,坏块是无法擦除的。即:坏块的标记是无法简单擦除的;UBOOT里有一个nand scrub命令,它就是强制擦除整个芯片的;但是执行 nand scrub后再执行nand bad还是可以查出原先的坏块
NAND FLASH初始化?
-
提问:
- 如果使用NAND方式启动开发板,在教程中韦老师说硬件会把Nand的4K内容拷贝到SRAM里,但是这个时候Nand都没有初始化,为什么能从Nand的前4K拷贝内容?
- 解答:
- 1.nand不需要初始化,要初始化的是nand 控制器
- 2.SROM的程序(我们看不见),会使用最安全的参数来初始化nand控制器,然后去读前4K到片内内存
-
提问:
- 不同页大小的NAND的读操作是不一样的,SROM怎么分辨?
- 解答:
- NAND不同时,电路板上要设置配置引脚为高电平或低电平,比如NCON引脚。
NANDFLASH疑问
NORFLASH初始化疑问
-
提问:
- 请问下裸机加强版 norflash的初始化在哪里啊?看视频好像直接就读写了
- 解答:
- 1.访问NOR时,本来也应该先设置时序;但是可以使用默认的时序。内存控制器内部对于CS0的时序,设置得非常保守,可以用于一切NOR FLASH
- 2.NOR可以像内存一样直接读,但是不能直接写
- 3.视频中,有讲解怎么去设置NOR的时序让它的访问更快一点
内存控制器疑问
-
提问:
- 老师 你好 之前你的课程有提到过内存控制器负责挑数据 那么怎么挑的呢?
- 解答:
- 比如 CPU想访问地址0x30000001的1字节数据,而SDRAM的位宽是32位,那么内存控制器会返回这4个地址上的4个字节数据:0x30000000,0x30000001,0x30000002,0x30000003。那显然,内存控制器会把第2个数据即地址0x30000001对应的数据返回给CPU
编译器疑问
-
提问:
- 1.arm交叉编译器各版本的兼容性,如使用3.4.5编译的动态链接库,可否用4.4编译应用程序,并成功调用动态库?
- 2.拿到一个陌生的arm版,如何从arm板上获取编译器版本,(原PC端开发信息丢失)?
- 解答:
- 问题1:
- 我们首先要弄清楚指令集的概念:
- JZ2440使用arm9核,该CPU核使用的指令集是armv4;
- 所谓指令集,指的是汇编指令的版本;比如cortex a7等更先进的CPU核它支持某些新的指令,而ARM9不支持这些指令。
- 你使用比较新的编译器时,它默认支持的指令集一般就不是armv4了;
- 如果不进行特别指定,编译出来的BIN文件烧在JZ2440上是无法运行的:因为CPU不认得某些新指令,无法执行某些新指令。
- 一般来说,新的编译器会兼容老的芯片,但是需要告诉编译器,让它使用老的指令集来编译程序。
- 所以,你当然可以使用4.4的工具链来编译jz2440程序,需要做的是:指定它,使用armv4指令集。
- 方法如下:
- 使用3.4.5工具链时,我们这样编译:arm-linux-gcc -c -o led.o led.c // 默认使用armv4
- 使用4.4等工具链时,这样编译:arm-linux-gcc -march=armv4 -c -o led.o led.c // 默认不是armv4,需要手工指定
- 方法如下:
- 我们首先要弄清楚指令集的概念:
- 问题2:
- 相信你已经知道答案了,
- 首先要确定你的CPU核使用哪些指令集,
- 是否支持软件浮点,
- 你想使用glibc还是uclibc,
- 然后根据这些特性去找对应的编译器。
- 注意:uclibc是glibc的简化版本,不过现在嵌入式的存储空间足够大了,基本不使用uclibc了。
- 问题1:
EOP疑问
EPO测试方法
- 1. EOP通过USB线接到电脑上,EOP通过JTAG排线接到开发板上
- 2. 开发板上电、断电,反复操作;同时观察EOP上的灯,看看灯有没有亮、灭;
- 如果EOP的灯没变化,表示JTAG排线有问题
- 3. 开发板上电,运行oflash,观察打印出来的CPUID
- 如果CPUID是0,一般表示开发板没上电
- 如果CPUID是0xffffffff,那么把开发板上电时执行一次oflash、开发板断电时再执行一次oflash:观察CPUID有无变化
- 4. 经过上述操作,oflash还是未能识别出开发板,一般来说就是JTAG线坏了、EOP坏了、开发板坏了
EOP支持调试模式吗?
- 解答:
- 不支持, 我们EOP用的是JTAG协议,但不支持SWD调试模式
- 参考,JTAG和SWD的区别。