当前位置:首页 » 编程软件 » bbb编译内核

bbb编译内核

发布时间: 2022-09-09 19:23:57

A. 在编译内核时修改linux文件系统出现这样的情况,不能保存,怎么破

这个是linux的保护机制,一般配置文件会自动产生一个.old文件。
因为文件非常重要,所以linux的保护机制提示需要备份一个,配置出错也能恢复。
每次操作一些文件的时候不妨 cp /xx/yyyy/aa.bbb /xx/yyyy/aa.bbb.old 后再进行操作。
这样出错了也能自己手动恢复回来,应该养成这样一个良好的习惯。
编辑的话觉得vi用不惯可以用nano。gedit编辑好像会出问题,以前我配置网卡IP的时候nano,vi写出来没问题,gedit写出来就有问题。这个我也就不懂了

B. beagle bone black怎么用SD卡更新内核

将内核编译好,自己写了一个hello world的驱动程序,弄到了BBB上insmod,于是出现了今天的主角---Invaild mole format

这种情况的原因一般是编译驱动时用的内核和开发板上的内核版本不一样。参见http://blog.csdn.net/zhenxisuiyuan/article/details/5570490
但是人家说要重新编译内核,我哪甘心重新编译?明明已经编译好了一个,编译好的直接代替不就行了。。。
于是拿出当年折腾gentoo的精神。。。。
BBB的启动内核是/boot/uimage,而编译生成的内核文件是3.8.13-beaglebone-zImage.uImage是
uboot的专用内核格式,只需要将zImage转换为uImage即可-是用mkimage命令,这个可以在uboot/tool下找到
转换命令mkimage -A arm -O linux -T kernel -C none -a 0x80007fc0 -e 0x80008000 -n Angstrom/3.8.13/beaglebone -d 3.8.13-bone33.1.zImage uImage-3.8.13
然后将uImage-3.8.13放到/boot/下,将/boot目录下的相关文件修改即可。编译内核的时候还会在deploy目录下生成几个压缩文件,将其解压到相应的目录即可

mkimage 的参数可以参考未修改之前的uboot的启动时打印的信息
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Angstrom/3.8.13/beaglebone
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3361616 Bytes = 3.2 MiB
Load Address: 80007fc0
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
XIP Kernel Image ... OK
OK
Using Device Tree in place at 80f80000, end 80f89133

Starting kernel ...

之后将模块insmod后dmesg | tail,一切正常

C. C语言问题:我想把一个数组的值复制到一个char指针里面,结果编译可以通过,但是运行不出来

这样说你就明白了,你有定义b[]这个数组吗?你现在只有一个b指针,指针指向的是内存,而不是说指针里面存这值,这样你明白不?
按你的意思是项把数组a[]里面的字符串通过指针b输出出来,那你的程序就不能这么写了
你要知道其实数组和指针有时候是有一定相似性的,比如说你定义的一维数组a[],你单独拿出a这个在程序中用,那么a就是一个地址,他里面是内存地址名字,而如果你拿a[i]出来用,那么就是取a这个地址中存储的内容来用,比如说是a[0],他里面存的是'a'这个字符,那你用printf("a=%d\n",a[0]);输出的时候就是'a'这个字符,但是你要是这么输出printf("a=%d\n",a);那你输出的就是内存地址了,不一定是什么数可,系统默认32位处理器内存地址是0x00000000~0xFFFFFFFF之间的16进制数表示的内存地址值,像我刚才输出的是整数,那就是10进制的,他会直接读取内存地址地址名转换成十进制输出出来,就是一大长串数字,所以你要项弄懂这个之间的关系,那就把指针懂。
其实指针也就那么回事,指针里面存的是地址,而不是一个数值。而这个地址里面存的才是数值
再来说你那个指针b,你想用b来输出数组a[]里面的字符串,那么就像我上面说的,数组a[]他里面的a就相当于一个指针,指向a[]数组第一个元素首地址的指针,那你只要把你的a这个指针赋给你新建的指针b就可以了。根本用不到什么循环。而你要输出字符串,那么既然现在b所指向的也和a指向的地址相同,那么直接就能输出来。
这是我修改的你看一下
#include <stdio.h>
int main(){
char a[] = "abc";
char *b = "bbb";
b=a;
printf("a[]=%s\n",a);
printf("b[]=%s\n",b);
return 0;
}

D. beaglebone black更换内核版本,还需要做一个新的根文件系统吗

内核编译自写hello world驱程序弄BBBinsmod,于现今主角---Invaild mole format

种情况原般编译驱用内核发板内核版本参见
家说要重新编译内核我哪甘重新编译明明已经编译编译直接代替行
于拿折腾gentoo精神
BBB启内核/boot/uimage,编译内核文件3.8.13-beaglebone-zImage.uImage
uboot专用内核格式需要zImage转换uImage即-用mkimage命令uboot/tool找
转换命令mkimage -A arm -O linux -T kernel -C none -a 0x80007fc0 -e 0x80008000 -n Angstrom/3.8.13/beaglebone -d 3.8.13-bone33.1.zImage uImage-3.8.13
uImage-3.8.13放/boot//boot目录相关文件修改即编译内核候deploy目录几压缩文件其解压相应目录即

mkimage 参数参考未修改前uboot启打印信息
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Angstrom/3.8.13/beaglebone
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3361616 Bytes = 3.2 MiB
Load Address: 80007fc0
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
XIP Kernel Image ... OK
OK
Using Device Tree in place at 80f80000, end 80f89133

Starting kernel ...

模块insmoddmesg | tail,切

E. 如何在最新的Debian系统下使用BB-VIEW

我想很多同学可能想知道如何让BB-VIEW在安装了最新的Debian beta系统映像的element14 BeagleBone Black上工作。

比较麻烦的是需要对内核重新编译。如果不重新编译的话,屏幕显示不会有问题(红蓝对调很容易解决),但是触摸屏控制引脚和标准的TI 4线接口不一样。我尝试过为ti_am335x_tsc.c文件打补丁,这样就只会对DTS进行重新编译,但是还没有成功(我敢肯定是状态机位分配的问题)。不扯远了,下面开始讲操作步骤。

步骤一览:

1) 下载需要用到的文件
a) Robert Nelson编译工具,用于编译BeagleBone内核
b)针对Angstrom的BB-VIEW源代码
2) 创建默认内核
3) 为内核打补丁并快速重新编译
4) 将新内核复制到BeagleBone
5) 编辑xorg.conf文件,纠正红蓝对调问题
6) 尽情享受你刚刚节省下来的整整4天的时间J

现在正式开始:

我用的是Ubuntu 12.04 LTS 64位版本,在VirtualBox虚拟机中来编辑内核:
> mkdir bb-view
> cd bb-view

安装git:
> apt-get install git

本地克隆Robert Nelson的linux-dev项目。下载文件有点大,交叉编译器大概100Mb,内核源码大概700Mb:
> git clone http冒号//github.com/RobertCNelson/linux-dev.git

进入新的linux-dev目录,然后选择符合Debian版本的branch/tag:
> cd linux-dev
> git checkout 3.8.13-bone37 -b tmp

现在我们需要创建基本的映像,这样就能植入BB-VIEW驱动目录。脚本会提示操作或需要安装的内容:
> ./build_kernel.sh

大约一个小时以后创建完毕(下面的内容需要下载Angstrom源代码)

为内核打补丁

从Angstrom源码提取两个文件:
> unzip angstrom-source.zip
> tar -zxf bb-black-kernel-3.8.13-bb-view.tar.bz2
> cp ./kernel/kernel/drivers/input/touchscreen/ti_am335x_tsc.c ~/bb-view/linux-dev/KERNEL/drivers/input/touchscreen/
> cp ./kernel/kernel/firmware/capes/BB-VIEW-LCD7-01-00A0.dts ~/bb-view/linux-dev/KERNEL/firmware/capes/

现在我们需要让编译器知道我们要添加固件:
> nano ~/bb-view/linux-dev/KERNEL/firmware/Makefile

将以下代码添加到第192行附近(按CTRL-C可以显示当前光标位置):
BB-VIEW-LCD7-01-00A0.dtbo \

不要忽略了后面的反斜杠,这很重要。然后按下CTRL-O、Enter和CTRL-X键来保存和退出。

回到linux-dev根目录:
> cd ~/bb-view/linux-dev

然后执行重新创建内核的命令,这一步需要的时间不会很长:
> ./tools/rebuild.sh

将内核复制到element14 BeagleBone Black:

以下命令的前提条件是已经在BeagleBone上安装了Debian beta系统并且成功启动。
最简单的方法是从网上通过“scp”命令复制文件:
> scp ~/bb-view/linux-dev/deploy/3.8.13-bone37.zImage [email protected]:/home/debian

把上面的debian替换成你在BeagleBone上的用户名,并且把192.168.7.2替换成BeagleBone的IP地址。
登录BeagleBone,然后将内核映像复制到启动分区:
> ssh [email protected]
bbb> sudo cp 3.8.13-bone37.zImage /boot/uboot/zImage

在让LCD正常工作前还需要做一件事情。由于BB-VIEW没有EEPROM,所以我们需要在启动命令中屏蔽HDMI驱动,并强行加载BB-VIEW驱动:
bbb> sudo nano /boot/uboot/uEnv.txt

找到“optargs”那一行,然后修改为:
optargs=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-VIEW-LCD7-01

注意前面的“#”已经删除了。否则EMMC被禁用,无法从emmc启动。
然后按下CTRL-O、Enter和CTRL-X键来保存和退出。
重新启动BeagleBone后,LCD就能工作了,但是蓝色和红色显示对调了。

修复红蓝色对调

这个问题是由于TI AM335x处理器在16位和24位视频模式切换时的错误造成的。要修复这个问题,需要首先找到显示屏的名称:
> ssh [email protected]
bbb> cat /var/log/Xorg.0.log | grep screen

我的显示屏名称是“Builtin Default fbdev Screen 0”
现在编辑X配置文件:
bbb> sudo nano /usr/share/X11/xorg.conf.d/10-evdev.conf

在文件末尾添加“Screen”代码段:
Section "Screen"
Identifier "Builtin Default fbdev Screen 0"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 24
EndSection

然后按下CTRL-O、Enter和CTRL-X键来保存和退出。
重新启动即可!

F. linux里的追加命令是什么

追加命令是可以使用文件追加重定向 >>。

优点;

1、Linux由众多微内核组成,其源代码完全开源。

2、Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈。

3、Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性。

(6)bbb编译内核扩展阅读;

linux里的通用命令有;

1、date:打印或者设置系统的日期和时间。

2、stty -a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、 Ctrl-Z等)。

3、passwd:用passwd -h查看。

4、logout,login:登录shell的登录和注销命令。

5、more,ess,head tail:显示或部分显示文件内容。

6、lp/lpstat/cancel,lpr/lpq/lprm:打印文件。

7、chmod u+x:更改文件权限。

8、rm -fr dir:删除非空目录。

9、cp -R dir:拷贝目录。

10、fg jobid:可以将一个后台进程放到前台。

11、kill 的作用:send a signal to a process,eg:kill -9 发送的是SIG_KILL信号,具体发送什么信号,可以通过man kill查看。

12、ps 的用法:ps -e 或 ps -o pid,ppid,session,tpgid,comm (其中session显示的sessionid,tpgid显示前台进程组id,comm显示命令名称)。

G. 安卓菜鸟关于 init.rc 中的 init.${ro.hardware}.rc 与 out 目录下生成的.rc文件名不一致的问题

Android本质上就是一个基于Linux内核的操作系统。与Ubuntu Linux、Fedora Linux类似。只是Android在应用层专门为移动设备添加了一些特有的支持。既然Android是Linux内核的系统,那么基本的启动过程也应符 合Linux的规则。如果研究过其他Linux系统应该了解,一个完整的Linux系统首先会将一个Linux内核装载到内存,也就是编译Linux内核 源代码生成的bzImage文件,对于为Android优化的Linux内核源代码会生成zImage文件。该文件就是Linux内核的二进制版本。由于 zImage在内核空间运行,而我们平常使用的软件都是在应用空间运行(关于内核空间和应用空间的详细描述,可以参考《Android深度探索(卷1):HAL与驱动开发》一书的内容,在后续的各卷中将会对Android的整体体系进行全方位的剖析)。内核空间和应用空间是不能直接通过内存地址级别访问的,所以就需要建立某种通讯机制。

H. 预处理器指令后有意外标记 - 应输入换行符 vc++问题

不是代码问题,而是CPP或C文件编码格式问题。
新建文本文件,复制内容过去,改名bbb.cpp(原来的挪走),使用新建的cpp文件进行编译试试吧。

热点内容
服务器多个ftp 发布:2025-03-26 16:34:02 浏览:355
缓解压力的花茶 发布:2025-03-26 16:30:51 浏览:246
宝马报警编程 发布:2025-03-26 16:09:04 浏览:825
一加z怎么样配置好 发布:2025-03-26 16:04:49 浏览:232
acer暗影骑士龙能装存储卡吗 发布:2025-03-26 16:04:36 浏览:310
php与lua 发布:2025-03-26 16:03:58 浏览:697
phpcurlxml 发布:2025-03-26 15:44:58 浏览:727
安卓手机如何清空流量 发布:2025-03-26 15:43:45 浏览:349
sqlserver图标 发布:2025-03-26 15:29:09 浏览:457
音频去噪算法 发布:2025-03-26 15:17:58 浏览:556