韦东山

第一次尝试写博客

天大地大妈咪最大 提交于 2020-03-11 13:13:02
第一次尝试写博客 韦东山视频教程学习总结 预计学习流程计划 对自己的希望 韦东山视频教程学习总结 韦东山老师的视频课程买了很久,一直没有好好的学习,借鉴其他人的做法, 用输出的方式倒逼输入 。打算尝试着写下博客,记录自己学习当中遇到的问题,以及解决办法,反过来也便于后面自己回顾,当时的记录。 预计学习流程计划 打算从JZ2440裸机编程开始,然后驱动专题的学习,让吃灰很久的开发板也能发挥下价值,uboot暂时不做深入研究,JZ2440学习过之后再过渡到IMX6ULL的学习。 对自己的希望 希望自己能在2020年坚持做下去,技术和个人能力能有所提升。 来源: CSDN 作者: lhl51311 链接: https://blog.csdn.net/lhl51311/article/details/104793711

韦东山视频

情到浓时终转凉″ 提交于 2020-01-17 06:57:42
1 环境搭建 交叉编译工具链安装路径: /opt/fsl-imx-x11/4.1.15-2.1.0 GCC编译器名称: arm-poky-linux-gnueabi-gcc 开发板挂载网络文件系统nfs: mount -t nfs -o nolock,vers=3 192.168.8.201:/home/book /mnt 把ubuntu服务器/home/book目录挂在为/mnt目录 每次开机后需要是能环境变量%CC source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi 2 编译操作 编译C程序: $CC main.c -o main arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi -o hello hello.c 制作、使用动态库:按照韦东山视频教程方法一直报错。 3 编译驱动程序操作 编译第一个驱动程序《01_hello_drv》

韦东山嵌入式Linux学习笔记07--Nandflash

ぃ、小莉子 提交于 2019-12-05 15:45:57
jz2440 v3上面用的nandflash是 K9F2G08U0C, 大小为256MB. 一个页的大小为(2k+64)byte,一个块的大小为(128k+4k)byte,原理图如下: nand的命令集: 那应该如何访问nand里面的数据呢?只要读写s32440的相关寄存器,就可以驱动nand的一些引脚. Makefile objs := head.o init.o nand.o main.o #依赖于这些文件 nand.bin : $(objs) arm-linux-ld -Tnand.lds -o nand_elf $^ #链接nand.lds $^表示所有依赖目标的集合 arm-linux-objcopy -O binary -S nand_elf $@ #规则中的目标文件集 arm-linux-objdump -D -m arm nand_elf > nand.dis %.o:%.c arm-linux-gcc -Wall -c -O2 -o $@ $< %.o:%.S arm-linux-gcc -Wall -c -O2 -o $@ $< clean: rm -f nand.dis nand.bin nand_elf *.o nand.lds SECTIONS { firtst 0x00000000 : { head.o init.o nand.o} /

韦东山嵌入式Linux学习笔记05--存储管理器

。_饼干妹妹 提交于 2019-12-04 15:55:41
问题 :   为什么两个DDR可以合在一起变成32位? SDRAM:    原理图如下:    jz2440 v3开发板上面用的内存芯片为钰创科技公司生产的EM63A165TS,一片内存大小为32MB大小,一共有两块,共64MB的大小. SDRAM接的是BANK 6,所以他的起始地址是 0x30000000. SDRAM的基本寻址关系 SDRAM的存储结构逻辑如上图, SDRAM内部是一个存储阵列,阵列就如同表格一样,将数据"填进去".和表格的检索原理一样,先指定一个行,再指定一个列,两点确定一个坐标,就可以准确地找到所需要的 单元格,这就是SDRAM寻址的基本原理.这个单元被称为存储单元,这个表格(存储阵列)就是逻辑Bank(就是L-Bank).SDRAM一般含有四个L-Bank. 对SDRAM的访问可以分为如下几个步骤:   1.CPU发出的片选信号nSCS0有效,它选中SDRAM芯片.   2.SDRAM有四个L-Bank,需要两根地址线来选中其中的一个,根据开发板的设计, 选用了ADDR24和ADDR25作为L-Bank的选择信号.   3.对被选中的芯片进行统一的行/列(存储单元)寻址.     根据SDRAM芯片的列地址线数目设置CPU的相关寄存器后,CPU就会从32位的自动分出L-Bank选择信号, 行地址信号,列地址信号,然后发出行地址信号,列地址信号. L

韦东山嵌入式Linux学习笔记04--点亮开发板的一个LED灯

╄→尐↘猪︶ㄣ 提交于 2019-12-04 12:32:48
搜索开发板原理图LED的走线 LED8是网线接口的指示灯. 在这里我们尝试用汇编代码控制D10, 也就是LED1,它连接到EINT4/GPF4,读取芯片手册 有原理图可知,如果需要点亮LED1,需要控制s3c2440的GPF4引脚输出低电平. GPFCON = 0x56000050 GPFDAT = 0x56000054 GPFUP = 0x56000058 ========================= 直接set 0x56000050 = 0x100 设置GPF4为引脚为输出模式 set 0x56000054 0x00 设置GPF4输出电平为0 set 0x56000058 0x10 不使能GPF4内部拉高 这样就可以控制改灯常亮,汇编应该怎么写? 首先需要配置交叉工具链才能够编译代码,请参照链接: https://jingyan.baidu.com/article/647f01151899607f2148a8f2.htm source /etc/profile 使生效 表示已经生效. 如果仍然提示找不到命令,就像下图一样 运行 arm-linux-gcc -v的时候也提示 bash: /usr/local/arm/2.3.6/bin/arm-linux-gcc: No such file or directory 这时候应当注意,因为未安装32位库,执行sudo apt

韦东山嵌入式Linux学习笔记03--如何搭建软件环境

笑着哭i 提交于 2019-12-04 11:38:38
1. 从网上下一个虚拟机,比如vmvare station 2.下一个ubuntu镜像回来安装, 我下了14.04来安装.参考链接: https://blog.csdn.net/qq1326702940/article/details/82322079 3.如果ubuntu界面不能正常缩放,可以使用命令安装vm tools 第一行命令:sudo apt-get upgrate 第二行命令:sudo apt-get install open-vm-tools-desktop -y 第三行命令:sudo reboot 4.更新Ubuntu的软件更新源 sudo cp /etc/apt/source.list /etc/apt/source.list.bk sudo gedit /etc/apt/source.list 清空里面的内容,然后加入下面内容: # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun

韦东山嵌入式Linux学习笔记02--如何给开发板烧录程序

僤鯓⒐⒋嵵緔 提交于 2019-12-04 09:46:06
购买韦东山嵌入式开发板jz2440 v3会标配两根usb线和一根网线,OpenJtag需要单独购买, 我暂时还没买到该工具. 下面介绍usb烧录以及通过网线烧录程序. 1.usb烧录程序:   借助DNW工具通过usb线烧录程序到Nandflash.   操作步骤:     a. 开发板断电, ①处拨成从norflash启动, ②处接到电脑的usb口, 同时连接好开发板的串口, 然后开发板上电.     b. 上电之后在倒数结束后按空格件进入uboot, 可以看到uboot输出一个菜单,输入n,选择下载程序到nand      此时会看到串口输出Waiting a download字样,如果是第一次使用DNW,需要装驱动            DNW软件及驱动和安装方法如下:      链接:https://pan.baidu.com/s/1MUEg7p4N_1pdsr-PoRDm7A 提取码:vc2n      安装好驱动之后,打开DNW,选择transmit后找到想要传输的文件,然后开始传输文件          链接:https://pan.baidu.com/s/1f2i3whebBwgeQ6_qMPIiRQ 提取码:y8tr 可供测试的bin文件     烧录好之后,开发板断电, 将①处拨为从nandflash启动,便可以看到刚刚下载的程序的效果了; 2.

韦东山嵌入式Linux学习笔记05--存储管理器

只愿长相守 提交于 2019-11-28 01:47:34
SDRAM:    原理图如下: jz2440 v3开发板上面用的内存芯片为钰创科技公司生产的EM63A165TS,一片内存大小为32MB大小,一共有两块,共64MB的大小. SDRAM接的是BANK 6,所以他的起始地址是 0x30000000. SDRAM的基本寻址关系 SDRAM的存储结构逻辑如上图, SDRAM内部是一个存储阵列,阵列就如同表格一样,将数据"填进去".和表格的检索原理一样,先指定一个行,再指定一个列,两点确定一个坐标,就可以准确地找到所需要的 单元格,这就是SDRAM寻址的基本原理.这个单元被称为存储单元,这个表格(存储阵列)就是逻辑Bank(就是L-Bank).SDRAM一般含有四个L-Bank. 对SDRAM的访问可以分为如下几个步骤:   1.CPU发出的片选信号nSCS0有效,它选中SDRAM芯片.   2.SDRAM有四个L-Bank,需要两根地址线来选中其中的一个,根据开发板的设计, 选用了ADDR24和ADDR25作为L-Bank的选择信号.   3.对被选中的芯片进行统一的行/列(存储单元)寻址.     根据SDRAM芯片的列地址线数目设置CPU的相关寄存器后,CPU就会从32位的自动分出L-Bank选择信号, 行地址信号,列地址信号,然后发出行地址信号,列地址信号. L-Bank选择信号在发出行地址信号的同时发出,并维持到列地址信号结束.

韦东山嵌入式学习心得

旧城冷巷雨未停 提交于 2019-11-28 01:47:22
对于只学过51单片机的人来说,刚开始接触嵌入式,感觉非常的不适应,因为它牵扯到操作系统。而且重点在于它的环境搭建就足够让人头痛一段时间。 不过庆幸的是,对于新手遇到的问题韦老师在视频里都有提及。因此,对于一个什么基础都没有的人,韦老师的学前班必须看,因为,我们需要在脑海中搭建起对于嵌入式,对于jz2440这款开发版的一个概念。最开始就算是不能很好的理解它,但你至少要让自己不再惧怕它,我一开始接触的时候,我心里还是有点恐惧的。环境搭建的时候,主机,虚拟机linux,开发版三者ping不通这个问题就让我头疼了不止一个礼拜。更何况,对于初学者而言linux操作系统还是非常陌生的,它虽然类似于Windows,但对于命令的操作还是让人一开始摸不着头脑。 学习时遇到问题常的,重点是在于你解决问题的态度。对于我而言,遇到问题时,百度和谷粉成为了我的心灵支柱,一般的问题在百度上都可以找到。此时我建议每个人最好建一个文本文档,然后把自己遇到的问题都记录在里面,这就相当于一个属于你自己的笔记。这样学习一段时间后,你就会发现,关于linux的基本操作你已经全会了,即使不会或者忘了,你也可以在你的笔记或者百度上找到。 接下来说说如何学习韦老师的视频,我觉得,对于初学者,尤其还未在脑好中建立起嵌入式系统概念的初学者,第一期的视频每一集如有不懂的地方应该反复看

韦东山嵌入式Linux学习笔记07--Nandflash

陌路散爱 提交于 2019-11-26 01:05:15
jz2440 v3上面用的nandflash是 K9F2G08U0C, 大小为256MB. 一个页的大小为(2k+64)byte,一个块的大小为(128k+4k)byte,原理图如下: nand的命令集: 那应该如何访问nand里面的数据呢?只要读写s32440的相关寄存器,就可以驱动nand的一些引脚. Makefile objs := head.o init.o nand.o main.o #依赖于这些文件 nand.bin : $(objs) arm-linux-ld -Tnand.lds -o nand_elf $^ #链接nand.lds $^表示所有依赖目标的集合 arm-linux-objcopy -O binary -S nand_elf $@ #规则中的目标文件集 arm-linux-objdump -D -m arm nand_elf > nand.dis %.o:%.c arm-linux-gcc -Wall -c -O2 -o $@ $< %.o:%.S arm-linux-gcc -Wall -c -O2 -o $@ $< clean: rm -f nand.dis nand.bin nand_elf *.o nand.lds SECTIONS { firtst 0x00000000 : { head.o init.o nand.o} /