不说原理,只讲步骤。包括所有自用包以及实验中遇到问题的解决办法。

想知道HZK16原理的直接搜关键词:HZK16汉字16*16点阵字库的使用

XMware:(14条消息) 小白如何在window电脑上安装Linux系统(虚拟机)超详细_码农邦的博客-CSDN博客_windows安装linux虚拟机

linux虚拟机:http://cdimage.ubuntu.com/ubuntu-mate/releases/18.04.4/release/

自用包(32位):链接:https://pan.baidu.com/s/1xnfhutYjEG0xnzD2KrQB2w 
提取码:gqfu 

下载32位镜像是因为方便,不然后面实验还要安别的包,很麻烦

1. Linux系统上编写输出自己名字的c程序(目录下要有hzk16文件:链接:https://pan.baidu.com/s/1md5mbE6jA0QXYzici16J0w 
提取码:ozp7 )

直接放代码test.c:

#include <stdio.h>
#include <stdlib.h>int main(void)
{FILE* fphzk = NULL;int i, j, k, m,offset;int flag;unsigned char buffer[32];//unsigned char word[2] = {0xD3,0xE0};unsigned char word[6] = {0xB4,0xF3,0xC6,0xAF,0xC1, 0xC1}; // 改成你的转码后的汉字编码,推荐自用转码网站:https://www.qqxiuzi.cn/bianma/zifuji.php  一个字32个字节,比如“猫”的GB2313编码是C3A8,那么拆成俩0xC3以及0xA8。unsigned char key[8] = { 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 };fphzk = fopen("hzk16", "rb");if(fphzk == NULL){fprintf(stderr, "error hzk16\n");return 1;}for(m=0;m<5;m=m+2){offset = (94*(unsigned int)(word[m]-0xa0-1)+(word[m+1]-0xa0-1))*32;fseek(fphzk, offset, SEEK_SET);fread(buffer, 1, 32, fphzk);for(k=0; k<16; k++){for(j=0; j<2; j++){for(i=0; i<8; i++){flag = buffer[k*2+j]&key[i];printf("%s", flag?"●":"○");}}printf("\n");}}for(k=0; k<31; k++){printf("0x%02X,", buffer[k]);}printf("\n");fclose(fphzk);fphzk = NULL;return 0;
}

其中:推荐自用汉字转码网站:https://www.qqxiuzi.cn/bianma/zifuji.php

2.在Linux系统中建立交叉编译环境并修改程序
(1)解压交叉编译工具
①将usr-local-arm-gcc.tar.gz(arm-linux 交叉编译工具)复制到 /usr/local 目录

交叉编译工具(下载压缩包里第一个,个人是下了前两个并解压到虚拟机同一目录里):

链接:https://pan.baidu.com/s/14LcEmSphD9mSIEcmp2JGiA 
提取码:we73

②终端"cd" 到 /usr/local (意思是所有的命令都要在对应的路径输入,否则会提示找不到文件)
③执行 “tar -xzf usr-local-arm-gcc.tar.gz” 命令解压缩
(2)配置环境变量
①打开环境变量文件:sudo gedit /etc/profile
②增加路径设置,在末尾添加如下:

export PATH=$PATH:/usr/local/bin
export PATH=$PATH:/usr/local/arm/bin

③注册环境变量:source /etc/profile
④测试是否安装成功:在终端里输入arm-linux-gcc -v

如果出现版本信息,就是成功安装了。

(3)修改代码(先编译执行之前的c代码之后再进行这一步,编译执行的命令请看下一步)
要在LCD上显示需要将printf语句改成在对应地址写寄存器值。

代码display.c:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <string.h>
#include <stdlib.h>
#define FONT_COLOR 0xf100 //红色
unsigned short *fb = 0;
int main(void)
{FILE* fphzk = NULL;int i, j, k, m,offset;int flag;int fd_fb = 0;unsigned char buffer[32];//unsigned char word[2] = {0xD3,0xE0};unsigned char word[6] = {0xB4,0xF3,0xC6,0xAF,0xC1, 0xC1}; // 改成你的转码后的汉字编码unsigned char key[8] = { 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 };fphzk = fopen("hzk16", "rb");if(fphzk == NULL){fprintf(stderr, "error hzk16\n");return 1;}fd_fb = open("/dev/fb0", O_RDWR);//打开FrameBuffer驱动fb = (unsigned short *)mmap(0, 240 * 320 * 2, PROT_READ | PROT_WRITE, MAP_SHARED, fd_fb, 0);//映射显示存储器,2:2Bytesmemset(fb,0,240 * 320 * 2); //清屏 for(m=0;m<5;m=m+2){offset = (94*(unsigned int)(word[m]-0xa0-1)+(word[m+1]-0xa0-1))*32;fseek(fphzk, offset, SEEK_SET);fread(buffer, 1, 32, fphzk);for(k=0; k<16; k++){for(j=0; j<2; j++){for(i=0; i<8; i++){if(buffer[k*2+j]&key[i])*(fb + (k + 100) * 240 + (m/2)*(16+5) + j* 8 + i) = FONT_COLOR;//printf("%s", flag?"●":"○");}}printf("\n");}}for(k=0; k<31; k++){printf("0x%02X,", buffer[k]);}printf("\n");fclose(fphzk);fphzk = NULL;return 0;
}

(4)交叉编译
(所有命令行均在该文件夹路径下执行)
对于修改前的代码:
①使用gcc编译:gcc -o display display.c 报错则修改,不报错则继续执行下一步
②执行编译文件:./display
对于修改后的代码:
①使用gcc编译:gcc -o display1 display.c 报错则修改,不报错则继续执行下一步
②使用arm-linux-gcc编译:arm-linux-gcc -o display1 display.c(先gcc编译再arm-linux-gcc编译!)
(这里,如果报错arm-linux-gcc找不到,那就再重复一遍上面注册的操作:cd /urs/local/,再输入注册命令:③注册环境变量:source /etc/profile④测试是否安装成功:在终端里输入arm-linux-gcc -v    之后再cd回来arm-linux-gcc -v ,出现版本信息后继续编译arm-linux-gcc -o display1 display.c)

3.制作新的文件系统镜像并烧写

(1)生成root文件系统
①将root文件系统镜像Mount(挂载)到一个空目录(disk)。使用如下命令:mount –t cramfs –o loop root.cramfs disk

如果没有下载cramfs,这里会报错:没有cramfs,需要安装cramfs

在安装cramfs安装包之前,需要下载zlib支持包,

链接:https://pan.baidu.com/s/1ouhHcGFWJJtsvImQjE8qGg 
        提取码:n5wc

1):解压zlib源码包和cramfs源码包.rar得到zlib-1.2.11.tar和cramfs_1.1.tar.gz压缩包 ,解压源码包 tar -xvf zlib-1.2.11.tar

2):解压源码包 tar -xvf cramfs_1.1.tar.gz

3):进入cramfs-1.1目录: cd cramfs-1.1

4):执行:  make

5):编译完成会生成cramfsck与mkcramfs两个工具,mkcramfs工具是用来创建cramfs文件系统,而cramfsck工具则用来对cramfs文件系统的释放和检查。(如果没有出现这两个文件,可以直接解压我已经make好的cramfs-1.1(把下载的cramfs全删掉,复制这个make好的cramfs文件到相应目录):链接:https://pan.baidu.com/s/1-SO5M4I31E-wVcMQaXGHTg 
提取码:zq0l )

下载完成后,使用如下命令:mount –t cramfs –o loop root.cramfs disk

②将disk目录内的整个root文件系统复制到一个新文件夹newdisk:将挂载后的文件夹在终端打开,输入sudo nautilus获得最高管理员权限,在弹出的文件窗口中操作即可(否则将没有复制权限)
③确定完整无误地复制了root文件系统后,Unmount(卸载)disk 内的文件系统,使用命令如下:
umount disk
④修改newdisk文件夹下所有文件的权限:
chmod -R 777 newdisk/
⑤将经过交叉编译的目标文件display及HZK16字库文件复制到newdisk的bin文件夹中(确保复制后两文件权限为可读写)
⑥使用如下命令生成一个新的 root 文件系统镜像:
./mkcramfs newdisk newroot.cramfs   (如果报错可以尝试把newdisk文件夹全部复制到cramfs1.1/下,即与mkcramfs工具在一个文件夹下)
⑦修改newroot的权限:
chmod 777 newroot.cramfs
(2)烧写
将newroot.cramfs文件拷贝至老师电脑某文件夹下,按照第一个实验的第三步(文件系统镜像烧写)进行烧写
①新建超级终端,恢复默认值,码率选择115200,上电
②输入2(文件系统镜像烧写)
③插拔usb激活
④将文件系统镜像文件拷贝到u盘里
⑤弹出u盘(文件拷贝结束的标志)
⑥按任意键开始烧写
⑦烧写结束后按复位键进入文件系统

ARM实验板移植,linux点阵字库的使用相关推荐

  1. 北邮实验:ARM实验板移植Linux操作系统,LCD显示汉字

    ARM实验板移植Linux操作系统,LCD显示汉字 一. 实验目的 1. 熟悉点阵字库的使用2. 熟悉Linux操作系统的使用3. 熟悉ARM嵌入式系统开发的过程 二. 实验内容 1. pc端编写用* ...

  2. ARM实验板移植Linux操作系统,LCD显示汉字(名字)

    一.实验目的 1.熟悉点阵字库的使用 2.熟悉Linux操作系统的使用 3.熟悉ARM嵌入式系统开发的过程 二.实验内容 1.pc端编写用×和空格显示自己名字的c程序 2.安装交叉编译工具,修改程序, ...

  3. [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植

    文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...

  4. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...

  5. arm开发板移植 curl

    arm开发板移植 curl 一,下载curl源码 二,配置curl 三,移植到arm平台上 三,arm平台curl测试 一,下载curl源码 地址:https://curl.haxx.se/downl ...

  6. arm开发板嵌入式Linux的ftp软件

    给嵌入式Linux开发板移植ftp服务器,简单好用.方便Windows去访问开发板内部数据 源码下载 stupid-ftpd是开源的,链接:Stupid-FTPd - Browse /stupid-f ...

  7. arm开发板移植ALSA库与ALSA工具

    目录 首先我们需要下载两个所要用到的库文件(基于Ubuntu) 一:先配置ALSA库文件 1.先解压放到家目录下ALSA的源文件: 2.解压后进去解压得到的文件夹执行以下命令: 3.配置好以后执行 二 ...

  8. Friendly ARM开发板安装Linux系统教程

    友善之臂ARM9开发板安装Linux系统教程 前言:智能蘑菇房项目的运行环境是友善之臂ARM9开发板,所以需要在上面灌一个linux系统,下面我来简单介绍一下. 准备 读卡器 SD卡 串口线一根(US ...

  9. ARM平板电脑移植Linux,iperf ARM移植

    iperf交叉编译: 1.PATH中有arm-linux相关工具 2.$ ./configure --host=arm-linux #define HAVE_MALLOC 0           改为 ...

最新文章

  1. notepad++ 设置编辑区域背景色为黑色
  2. 前端的百度地图的api的使用
  3. python 转成摩尔斯电码_一篇文章教会你摩尔斯码
  4. 2019ICPC(银川) - Largest Common Submatrix(单调栈)
  5. 全景图像拼接——图像融合
  6. 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
  7. python excel行数计算不对_数十万数据Excel数据不好处理怎么办?几行Python搞定
  8. 英语阅读测试,很神奇吧~
  9. .NET MVC 遇到的小问题
  10. 可视化理解卷积神经网络 - 反卷积网络 - 没看懂
  11. 数学建模6 典型相关分析
  12. 主流影视网站8合一H5视频源码自动更新数据
  13. android GPS开发
  14. ‘dtools’不是内部或外部命令,也不是可运行的程序或批处理文件,个人解决方案
  15. 数据库系统概论练习4
  16. python 面向对象 搬家具实例
  17. C# web 讯飞语音在线合成 错误10111
  18. Not creating XLA devices, tf_xla_enable_xla_devices not set错误求助
  19. Vuecli中添加elementui插件
  20. SpringMVC大体流程框架类图版

热门文章

  1. 蒙特卡洛树搜索(The monte carlo search tree)
  2. 【软件设计模式】常用的设计模式的介绍
  3. jstree的属性设置
  4. Bowtie2的简单使用笔记
  5. C# Hash字符串
  6. 字符串查找函数:strchr、strrchr、strchrnul、strstr、strrstr
  7. 3.1 CUDA执行模型概述
  8. java-常量和变量
  9. docker 安装node
  10. 微信小程序---JavaScript脚本