您尚未登录。

#1 Re: 全志 SOC » 子午线V3s路由器试玩 » 2021-11-23 08:22:05

确实值得学习,那些网络设备 br-lan, mon0 什么的以前都没见过,

[ 1021.395647] dhd_stop: Enter c31ef800
[ 1021.400934] dhd_set_mcast_list_handler: interface info not available/down
[ 1021.409582] dhdcdc_set_ioctl: SET PM to 0
[ 1021.418839] CFGP2P-ERROR) wl_cfgp2p_disable_discovery :
[ 1021.418852]  do nothing, not initialized
[ 1021.428259] CFGP2P-ERROR) wl_cfgp2p_deinit_priv :
[ 1021.428264] In
[ 1021.439386] dhd_stop: Exit
[ 1021.525007] dhd_open: Enter c31ef800
[ 1021.562579] dhd_open: Exit ret=0
[ 1021.593042] dhd_set_monitor: if 0 val 1851876211,cur   (null)
[ 1021.692969] dhdcdc_set_ioctl: SET PM to 0
[ 1021.785666] dhd_set_monitor: if 0 val 3,cur c248e000
[ 1021.790644] dhd_set_monitor: Mismatched params, return
[ 1198.921753] device mon0 entered promiscuous mode
[ 1618.888547] sys_check.sh (16292): drop_caches: 3
[ 2218.911067] sys_check.sh (19352): drop_caches: 3
[ 2818.921089] sys_check.sh (22296): drop_caches: 3
[ 3418.947203] sys_check.sh (25270): drop_caches: 3
[ 4019.001705] sys_check.sh (28157): drop_caches: 3
[ 4618.970054] sys_check.sh (31190): drop_caches: 3

shell 信息可以出现在 kmsg 里面是什么原理?

还有他的WIFI网卡,既可以自己做热点,又可以同时连接别的热点,不知道怎么做到的。

目前还不能通过WIFI桥接上网, 虽然在串口终端ping qq.com 正常。

#2 Re: 全志 SOC » 怎样在v3s上使用gcc编译器 » 2021-11-21 16:55:47

以前的buildroot可以构建arm linux下的gcc,现在新版本已经删除了。

如果把 debian 怼上去,可以通过apt安装gcc。

#3 Re: 全志 SOC » v3s lichee zero 单独usb供电,启动到uboot就没戏了? » 2021-11-16 12:19:49

U-Boot SPL 2021.07 (Nov 13 2021 - 11:49:14 +0800)
DRAM: 64 MiB
Trying to boot from MMC1


U-Boot 2021.07 (Nov 13 2021 - 11:49:14 +0800) Allwinner Technology

CPU:   Allwinner V3s (SUN8I 1681)
Model: Smallwit Pi Lite
DRAM:  64 MiB
MMC:   mmc@1c0f000: 0
Loading Environment from nowhere... OK
In:    serial@1c28000
Out:   serial@1c28000
Err:   serial@1c28000
Net:   No ethernet found.
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
MMC Device 1 not found
no mmc device at slot 1
SF: Detected n25q128a13 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
=========================
Boot Device: mmc0
Boot Slot 0: mmc0
Boot Slot 1: spi-nor
=========================
switch to partitions #0, OK
mmc0 is current device
Booting from MMC0...
4661328 bytes read in 261 ms (17 MiB/s)
14142 bytes read in 5 ms (2.7 MiB/s)
Kernel image @ 0x40000000 [ 0x000000 - 0x472050 ]
## Flattened Device Tree blob at 40700000
   Booting using the fdt blob at 0x40700000
   Loading Device Tree to 416f9000, end 416ff73d ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0

注意看信息,第一次是SPL,第二次才是真正的UBOOT

#4 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 立创海外50讨论 » 2021-11-14 23:38:46

泼盆冷水,据说清关费用自己扛,不能退单,否则拉黑,Q群看到的,真实性有待验证。

#6 Re: SigmaStar/SSD201/SSD202/SSD212 » 有一个对标F1C800的芯片SigmaStar SSD201有谁了解吗 双核A7 » 2021-10-10 17:08:37

binbin 说:
fogwizard 说:

同感,料是好料,用户手册都没得提供,说多了都是泪

这家公司有打电话问过, 不好打交道的,问他要代理商的电话 也不给,跟他做生意  还不愿意的样子

现在芯片是卖方市场,会鸟人才怪了?

#7 Re: 全志 SOC » 用V3S跑QT5??? » 2021-09-26 12:18:58

只勾选 Qt 的ui部分不需要多少空间。

#11 Re: ESP32/ESP8266 » ESP8266的外设真的很拉垮 » 2021-09-01 12:49:00

I2C和PWM都是软件实现的实际上硬件并没有

阔怕阔怕

#12 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 记录一下常用易忘的Linux日常操作 » 2021-08-28 10:21:51

objdump -T 查看动态链接库导出的函数。

$ riscv64-linux-gnu-objdump -T  ./out/d1-nezha/compile_dir/target/rootfs/usr/lib/libuapi.so

./out/d1-nezha/compile_dir/target/rootfs/usr/lib/libuapi.so:     file format elf64-littleriscv

DYNAMIC SYMBOL TABLE:
0000000000001970 l    d  .text  0000000000000000              .text
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  fprintf
0000000000000000  w   D  *UND*  0000000000000000              _ITM_deregisterTMCloneTable
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  getenv
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  munmap
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  malloc
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  fputs
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  usleep
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  mmap64
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  __errno_location
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  pthread_mutex_unlock
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  memcpy
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  strerror
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  close
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  puts
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  ioctl
0000000000000000      DO *UND*  0000000000000000  GLIBC_2.27  stderr
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  pthread_mutex_lock
0000000000000000  w   DF *UND*  0000000000000000  GLIBC_2.27  __cxa_finalize
0000000000000000  w   D  *UND*  0000000000000000              _ITM_registerTMCloneTable
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  open64
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  strcmp
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  memset
0000000000000000      DF *UND*  0000000000000000  GLIBC_2.27  free
0000000000005258 g    DO .bss   0000000000000028  Base        g_ion_mutex_alloc
0000000000001aae g    DF .text  0000000000000066  Base        sunxi_ion_alloc_get_viraddr_byFd
0000000000002120 g    DF .text  000000000000009e  Base        sunxi_ion_alloc_get_total_size
00000000000023ca g    DF .text  0000000000000014  Base        sunxi_ion_flush_cache_all
0000000000002b0e g    DF .text  00000000000000ee  Base        DispQueueToDisplay
0000000000002e26 g    DF .text  00000000000000fa  Base        DispInit
00000000000021ce g    DF .text  0000000000000096  Base        sunxi_ion_alloc_phy2vir_cpu
0000000000001b14 g    DF .text  000000000000011e  Base        sunxi_ion_alloc_open
00000000000023e8 g    DF .text  000000000000009c  Base        nv_rotage90
0000000000002768 g    DF .text  0000000000000074  Base        DispSetRect
00000000000030d6 g    DF .text  0000000000000016  Base        DestroyVideoOutport
0000000000005288 g    DO .bss   0000000000000030  Base        mLayerStatus
000000000000232c g    DF .text  0000000000000004  Base        sunxi_ion_alloc_shutdown
0000000000002484 g    DF .text  00000000000000a2  Base        nv_rotage270
0000000000002bfc g    DF .text  00000000000001ce  Base        DispWriteData
0000000000002350 g    DF .text  000000000000007a  Base        sunxi_ion_alloc_close
0000000000002612 g    DF .text  00000000000000d6  Base        DispAllocateVideoMem
0000000000002552 g    DF .text  000000000000001c  Base        DispGetScreenHeight
0000000000002ff6 g    DF .text  000000000000002c  Base        disp_layer_off
000000000000252e g    DF .text  0000000000000008  Base        DispSetRoute
0000000000001a1e g    DF .text  0000000000000004  Base        sunxi_ion_alloc_setup
0000000000002330 g    DF .text  0000000000000010  Base        sunxi_ion_alloc_read
0000000000002f20 g    DF .text  000000000000004a  Base        LayerClose
0000000000001a22 g    DF .text  0000000000000010  Base        sunxi_ion_alloc_memset
0000000000002f96 g    DF .text  0000000000000034  Base        DispDeinit
0000000000001e40 g    DF .text  000000000000010e  Base        sunxi_ion_alloc_pfree
0000000000001f4e g    DF .text  00000000000001d2  Base        sunxi_ion_alloc_alloc_drm
0000000000002736 g    DF .text  0000000000000032  Base        DispSetIoctl
00000000000025da g    DF .text  0000000000000038  Base        DispFreeVideoMem
000000000000284c g    DF .text  0000000000000090  Base        DispSetEnable
0000000000002340 g    DF .text  0000000000000010  Base        sunxi_ion_alloc_write
00000000000021be g    DF .text  0000000000000010  Base        sunxi_ion_alloc_copy
0000000000002f6a g    DF .text  000000000000002c  Base        LayerRelease
0000000000002526 g    DF .text  0000000000000008  Base        DispSetRotateAngel
0000000000002fca g    DF .text  000000000000002c  Base        disp_layer_on
0000000000002dca g    DF .text  000000000000005c  Base        LayerRequest
0000000000002536 g    DF .text  000000000000001c  Base        DispGetScreenWidth
0000000000002264 g    DF .text  000000000000008a  Base        sunxi_ion_alloc_get_bufferFd
0000000000003022 g    DF .text  00000000000000b4  Base        CreateVideoOutport
00000000000028dc g    DF .text  000000000000006a  Base        DispSetSrcRect
0000000000005008 g    DO .data  0000000000000090  Base        _allocionMemOpsS
0000000000005280 g    DO .bss   0000000000000008  Base        g_ion_alloc_context
00000000000026e8 g    DF .text  000000000000004e  Base        DispDequeue
00000000000023de g    DF .text  000000000000000a  Base        GetMemAdapterOpsS
0000000000005248 g    DO .bss   000000000000000c  Base        binfo
00000000000022ee g    DF .text  000000000000003e  Base        sunxi_ion_alloc_flush_cache
0000000000001a32 g    DF .text  000000000000007c  Base        sunxi_ion_alloc_vir2phy_cpu
00000000000027dc g    DF .text  0000000000000070  Base        DispSetZorder
0000000000001c32 g    DF .text  000000000000020e  Base        sunxi_ion_alloc_palloc

#13 Re: 全志 SOC » 执行Qt程序,提示库文件找不到。 » 2021-08-28 09:37:19

可能是 buildroot 你没有配置正确,也可能是buildroot这个版本有bug,到时候再检查一下。

#14 Re: 全志 SOC » 执行Qt程序,提示库文件找不到。 » 2021-08-28 09:29:39

mkdir /home/gzpeite/buildroot-2019.11.3/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/

cp libGLESv2.so /home/gzpeite/buildroot-2019.11.3/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/

别挣扎,死马做活马先。

#15 Re: 全志 SOC » 执行Qt程序,提示库文件找不到。 » 2021-08-28 09:23:03

/home/gzpeite/buildroot-2019.11.3/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libGLESv2.so

把 libGLESv2.so 复制到这里先试一试。

#16 Re: 全志 SOC » 哪吒D1使用gstreamer硬解码 » 2021-08-26 09:06:15

niubility!!!

但是视频看不到图像。

#17 Re: 全志 SOC » [V3X][Mystery]项目开发进度汇报 » 2021-08-23 20:20:35

mysteryli 说:

@ubuntu
你有设计板子吗

准备设计,不过最近很忙,所以没来得及玩。

#20 Re: 全志 SOC » [V3X][Mystery]项目开发进度汇报 » 2021-08-21 11:23:39

sblpp 说:
qianniao29 说:
sblpp 说:

芯片哪搞啊,万能宝木有啊

晕哥在小黄鱼有卖,买了两片还送了我一块F1C600的板子:D

太好了,求链接,我也搞个玩玩

好象是这个: https://item.taobao.com/item.htm?id=644300847063

#22 Re: 全志 SOC » 终于找到了全志SPI CS片选最多的soc了, 一共四个片选引脚 » 2021-08-17 15:40:19

H5的spi控制器驱动, 可以通过 gpio 控制 spi 片选 (转载)
https://whycan.com/t_2418.html#p48766


怪不得要用gpio片选喔

#23 Re: 全志 SOC » 哪吒D1默认显示输出改成HDMI » 2021-08-16 19:31:58

在移植LVGL的时候发现如果不把默认显示输出改成HDMI的话 那么LVGL通过fbdev读出来的fb分辨率就是原来800*1280的 所以用HDMI的来显示的话必须得修改

怪不得怪不得!

#24 Re: 全志 SOC » RGB888不使用8位时,低位数据线应该怎么接? » 2021-08-16 11:06:40

我见到的大部分0浮空,然后是1接地,偶尔看到2 R7/R6

#25 Re: 全志 SOC » 尝试编译一下哪吒D1的Tina系统 » 2021-08-15 17:42:51

晕哥网盘那个比较老了,要记得repo sync 更新到最新版本,具体修复了啥我也不知道。

#26 全志 SOC » TSC2007 I2C触摸驱动有个地方没搞明白, 为什么IRQ引脚和GPIO检测PEN引脚状态可以是同一个 » 2021-08-15 17:25:41

ubuntu
回复: 1

TSC2007 I2C触摸驱动有个地方没搞明白,
为什么IRQ引脚和GPIO检测PEN引脚状态可以是同一个,
这样在 IRQ/GPIO 两种复用之间要来回切换吗?
可是驱动代码里面并没有出现这种切换。


https://github.com/torvalds/linux/blob/master/drivers/input/touchscreen/tsc2007_core.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * drivers/input/touchscreen/tsc2007.c
 *
 * Copyright (c) 2008 MtekVision Co., Ltd.
 *	Kwangwoo Lee <kwlee@mtekvision.com>
 *
 * Using code from:
 *  - ads7846.c
 *	Copyright (c) 2005 David Brownell
 *	Copyright (c) 2006 Nokia Corporation
 *  - corgi_ts.c
 *	Copyright (C) 2004-2005 Richard Purdie
 *  - omap_ts.[hc], ads7846.h, ts_osk.c
 *	Copyright (C) 2002 MontaVista Software
 *	Copyright (C) 2004 Texas Instruments
 *	Copyright (C) 2005 Dirk Behme
 */

#include <linux/module.h>
#include <linux/slab.h>
#include <linux/gpio/consumer.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/i2c.h>
#include <linux/mod_devicetable.h>
#include <linux/property.h>
#include <linux/platform_data/tsc2007.h>
#include "tsc2007.h"

int tsc2007_xfer(struct tsc2007 *tsc, u8 cmd)
{
	s32 data;
	u16 val;

	data = i2c_smbus_read_word_data(tsc->client, cmd);
	if (data < 0) {
		dev_err(&tsc->client->dev, "i2c io error: %d\n", data);
		return data;
	}

	/* The protocol and raw data format from i2c interface:
	 * S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
	 * Where DataLow has [D11-D4], DataHigh has [D3-D0 << 4 | Dummy 4bit].
	 */
	val = swab16(data) >> 4;

	dev_dbg(&tsc->client->dev, "data: 0x%x, val: 0x%x\n", data, val);

	return val;
}

static void tsc2007_read_values(struct tsc2007 *tsc, struct ts_event *tc)
{
	/* y- still on; turn on only y+ (and ADC) */
	tc->y = tsc2007_xfer(tsc, READ_Y);

	/* turn y- off, x+ on, then leave in lowpower */
	tc->x = tsc2007_xfer(tsc, READ_X);

	/* turn y+ off, x- on; we'll use formula #1 */
	tc->z1 = tsc2007_xfer(tsc, READ_Z1);
	tc->z2 = tsc2007_xfer(tsc, READ_Z2);

	/* Prepare for next touch reading - power down ADC, enable PENIRQ */
	tsc2007_xfer(tsc, PWRDOWN);
}

u32 tsc2007_calculate_resistance(struct tsc2007 *tsc, struct ts_event *tc)
{
	u32 rt = 0;

	/* range filtering */
	if (tc->x == MAX_12BIT)
		tc->x = 0;

	if (likely(tc->x && tc->z1)) {
		/* compute touch resistance using equation #1 */
		rt = tc->z2 - tc->z1;
		rt *= tc->x;
		rt *= tsc->x_plate_ohms;
		rt /= tc->z1;
		rt = (rt + 2047) >> 12;
	}

	return rt;
}

bool tsc2007_is_pen_down(struct tsc2007 *ts)
{
	/*
	 * NOTE: We can't rely on the pressure to determine the pen down
	 * state, even though this controller has a pressure sensor.
	 * The pressure value can fluctuate for quite a while after
	 * lifting the pen and in some cases may not even settle at the
	 * expected value.
	 *
	 * The only safe way to check for the pen up condition is in the
	 * work function by reading the pen signal state (it's a GPIO
	 * and IRQ). Unfortunately such callback is not always available,
	 * in that case we assume that the pen is down and expect caller
	 * to fall back on the pressure reading.
	 */

	if (!ts->get_pendown_state)
		return true;

	return ts->get_pendown_state(&ts->client->dev);
}

static irqreturn_t tsc2007_soft_irq(int irq, void *handle)
{
	struct tsc2007 *ts = handle;
	struct input_dev *input = ts->input;
	struct ts_event tc;
	u32 rt;

	while (!ts->stopped && tsc2007_is_pen_down(ts)) {

		/* pen is down, continue with the measurement */

		mutex_lock(&ts->mlock);
		tsc2007_read_values(ts, &tc);
		mutex_unlock(&ts->mlock);

		rt = tsc2007_calculate_resistance(ts, &tc);

		if (!rt && !ts->get_pendown_state) {
			/*
			 * If pressure reported is 0 and we don't have
			 * callback to check pendown state, we have to
			 * assume that pen was lifted up.
			 */
			break;
		}

		if (rt <= ts->max_rt) {
			dev_dbg(&ts->client->dev,
				"DOWN point(%4d,%4d), resistance (%4u)\n",
				tc.x, tc.y, rt);

			rt = ts->max_rt - rt;

			input_report_key(input, BTN_TOUCH, 1);
			input_report_abs(input, ABS_X, tc.x);
			input_report_abs(input, ABS_Y, tc.y);
			input_report_abs(input, ABS_PRESSURE, rt);

			input_sync(input);

		} else {
			/*
			 * Sample found inconsistent by debouncing or pressure is
			 * beyond the maximum. Don't report it to user space,
			 * repeat at least once more the measurement.
			 */
			dev_dbg(&ts->client->dev, "ignored pressure %d\n", rt);
		}

		wait_event_timeout(ts->wait, ts->stopped, ts->poll_period);
	}

	dev_dbg(&ts->client->dev, "UP\n");

	input_report_key(input, BTN_TOUCH, 0);
	input_report_abs(input, ABS_PRESSURE, 0);
	input_sync(input);

	if (ts->clear_penirq)
		ts->clear_penirq();

	return IRQ_HANDLED;
}

static irqreturn_t tsc2007_hard_irq(int irq, void *handle)
{
	struct tsc2007 *ts = handle;

	if (tsc2007_is_pen_down(ts))
		return IRQ_WAKE_THREAD;

	if (ts->clear_penirq)
		ts->clear_penirq();

	return IRQ_HANDLED;
}

static void tsc2007_stop(struct tsc2007 *ts)
{
	ts->stopped = true;
	mb();
	wake_up(&ts->wait);

	disable_irq(ts->irq);
}

static int tsc2007_open(struct input_dev *input_dev)
{
	struct tsc2007 *ts = input_get_drvdata(input_dev);
	int err;

	ts->stopped = false;
	mb();

	enable_irq(ts->irq);

	/* Prepare for touch readings - power down ADC and enable PENIRQ */
	err = tsc2007_xfer(ts, PWRDOWN);
	if (err < 0) {
		tsc2007_stop(ts);
		return err;
	}

	return 0;
}

static void tsc2007_close(struct input_dev *input_dev)
{
	struct tsc2007 *ts = input_get_drvdata(input_dev);

	tsc2007_stop(ts);
}

static int tsc2007_get_pendown_state_gpio(struct device *dev)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct tsc2007 *ts = i2c_get_clientdata(client);

	return gpiod_get_value(ts->gpiod);
}

static int tsc2007_probe_properties(struct device *dev, struct tsc2007 *ts)
{
	u32 val32;
	u64 val64;

	if (!device_property_read_u32(dev, "ti,max-rt", &val32))
		ts->max_rt = val32;
	else
		ts->max_rt = MAX_12BIT;

	if (!device_property_read_u32(dev, "ti,fuzzx", &val32))
		ts->fuzzx = val32;

	if (!device_property_read_u32(dev, "ti,fuzzy", &val32))
		ts->fuzzy = val32;

	if (!device_property_read_u32(dev, "ti,fuzzz", &val32))
		ts->fuzzz = val32;

	if (!device_property_read_u64(dev, "ti,poll-period", &val64))
		ts->poll_period = msecs_to_jiffies(val64);
	else
		ts->poll_period = msecs_to_jiffies(1);

	if (!device_property_read_u32(dev, "ti,x-plate-ohms", &val32)) {
		ts->x_plate_ohms = val32;
	} else {
		dev_err(dev, "Missing ti,x-plate-ohms device property\n");
		return -EINVAL;
	}

	ts->gpiod = devm_gpiod_get_optional(dev, NULL, GPIOD_IN);
	if (IS_ERR(ts->gpiod))
		return PTR_ERR(ts->gpiod);

	if (ts->gpiod)
		ts->get_pendown_state = tsc2007_get_pendown_state_gpio;
	else
		dev_warn(dev, "Pen down GPIO is not specified in properties\n");

	return 0;
}

static int tsc2007_probe_pdev(struct device *dev, struct tsc2007 *ts,
			      const struct tsc2007_platform_data *pdata,
			      const struct i2c_device_id *id)
{
	ts->model             = pdata->model;
	ts->x_plate_ohms      = pdata->x_plate_ohms;
	ts->max_rt            = pdata->max_rt ? : MAX_12BIT;
	ts->poll_period       = msecs_to_jiffies(pdata->poll_period ? : 1);
	ts->get_pendown_state = pdata->get_pendown_state;
	ts->clear_penirq      = pdata->clear_penirq;
	ts->fuzzx             = pdata->fuzzx;
	ts->fuzzy             = pdata->fuzzy;
	ts->fuzzz             = pdata->fuzzz;

	if (pdata->x_plate_ohms == 0) {
		dev_err(dev, "x_plate_ohms is not set up in platform data\n");
		return -EINVAL;
	}

	return 0;
}

static void tsc2007_call_exit_platform_hw(void *data)
{
	struct device *dev = data;
	const struct tsc2007_platform_data *pdata = dev_get_platdata(dev);

	pdata->exit_platform_hw();
}

static int tsc2007_probe(struct i2c_client *client,
			 const struct i2c_device_id *id)
{
	const struct tsc2007_platform_data *pdata =
		dev_get_platdata(&client->dev);
	struct tsc2007 *ts;
	struct input_dev *input_dev;
	int err;

	if (!i2c_check_functionality(client->adapter,
				     I2C_FUNC_SMBUS_READ_WORD_DATA))
		return -EIO;

	ts = devm_kzalloc(&client->dev, sizeof(struct tsc2007), GFP_KERNEL);
	if (!ts)
		return -ENOMEM;

	if (pdata)
		err = tsc2007_probe_pdev(&client->dev, ts, pdata, id);
	else
		err = tsc2007_probe_properties(&client->dev, ts);
	if (err)
		return err;

	input_dev = devm_input_allocate_device(&client->dev);
	if (!input_dev)
		return -ENOMEM;

	i2c_set_clientdata(client, ts);

	ts->client = client;
	ts->irq = client->irq;
	ts->input = input_dev;

	init_waitqueue_head(&ts->wait);
	mutex_init(&ts->mlock);

	snprintf(ts->phys, sizeof(ts->phys),
		 "%s/input0", dev_name(&client->dev));

	input_dev->name = "TSC2007 Touchscreen";
	input_dev->phys = ts->phys;
	input_dev->id.bustype = BUS_I2C;

	input_dev->open = tsc2007_open;
	input_dev->close = tsc2007_close;

	input_set_drvdata(input_dev, ts);

	input_set_capability(input_dev, EV_KEY, BTN_TOUCH);

	input_set_abs_params(input_dev, ABS_X, 0, MAX_12BIT, ts->fuzzx, 0);
	input_set_abs_params(input_dev, ABS_Y, 0, MAX_12BIT, ts->fuzzy, 0);
	input_set_abs_params(input_dev, ABS_PRESSURE, 0, MAX_12BIT,
			     ts->fuzzz, 0);

	if (pdata) {
		if (pdata->exit_platform_hw) {
			err = devm_add_action(&client->dev,
					      tsc2007_call_exit_platform_hw,
					      &client->dev);
			if (err) {
				dev_err(&client->dev,
					"Failed to register exit_platform_hw action, %d\n",
					err);
				return err;
			}
		}

		if (pdata->init_platform_hw)
			pdata->init_platform_hw();
	}

	err = devm_request_threaded_irq(&client->dev, ts->irq,
					tsc2007_hard_irq, tsc2007_soft_irq,
					IRQF_ONESHOT,
					client->dev.driver->name, ts);
	if (err) {
		dev_err(&client->dev, "Failed to request irq %d: %d\n",
			ts->irq, err);
		return err;
	}

	tsc2007_stop(ts);

	/* power down the chip (TSC2007_SETUP does not ACK on I2C) */
	err = tsc2007_xfer(ts, PWRDOWN);
	if (err < 0) {
		dev_err(&client->dev,
			"Failed to setup chip: %d\n", err);
		return err;	/* chip does not respond */
	}

	err = input_register_device(input_dev);
	if (err) {
		dev_err(&client->dev,
			"Failed to register input device: %d\n", err);
		return err;
	}

	err =  tsc2007_iio_configure(ts);
	if (err) {
		dev_err(&client->dev,
			"Failed to register with IIO: %d\n", err);
		return err;
	}

	return 0;
}

static const struct i2c_device_id tsc2007_idtable[] = {
	{ "tsc2007", 0 },
	{ }
};

MODULE_DEVICE_TABLE(i2c, tsc2007_idtable);

static const struct of_device_id tsc2007_of_match[] = {
	{ .compatible = "ti,tsc2007" },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, tsc2007_of_match);

static struct i2c_driver tsc2007_driver = {
	.driver = {
		.name	= "tsc2007",
		.of_match_table = tsc2007_of_match,
	},
	.id_table	= tsc2007_idtable,
	.probe		= tsc2007_probe,
};

module_i2c_driver(tsc2007_driver);

MODULE_AUTHOR("Kwangwoo Lee <kwlee@mtekvision.com>");
MODULE_DESCRIPTION("TSC2007 TouchScreen Driver");
MODULE_LICENSE("GPL");

buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
https://whycan.com/t_5221.html#p54779

        rtp@48 {
                compatible = "ti,tsc2007";
                reg = <0x48>;
                interrupt-parent = <&pio>;
                interrupts = <4 12 IRQ_TYPE_EDGE_FALLING>;
                gpios = <&pio 4 12 GPIO_ACTIVE_LOW>;
                pendown-gpio = <&pio 4 12 GPIO_ACTIVE_LOW>;
                ti,x-plate-ohms = <660>;
                wakeup-source;
                status = "okay";
        };

#27 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请问 ADS7843 ADS7846 TSC2046 有什么区别吗? » 2021-08-14 18:38:30

diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 5e640ae..c0b36cc 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -12,17 +12,17 @@ menuconfig INPUT_TOUCHSCREEN
 if INPUT_TOUCHSCREEN
 
 config TOUCHSCREEN_ADS7846
-	tristate "ADS 7846/7843 based touchscreens"
+	tristate "ADS7846/TSC2046 and ADS7843 based touchscreens"
 	depends on SPI_MASTER
 	depends on HWMON = n || HWMON
 	help
 	  Say Y here if you have a touchscreen interface using the
-	  ADS7846 or ADS7843 controller, and your board-specific setup
-	  code includes that in its table of SPI devices.
+	  ADS7846/TSC2046 or ADS7843 controller, and your board-specific
+	  setup code includes that in its table of SPI devices.
 
 	  If HWMON is selected, and the driver is told the reference voltage
 	  on your board, you will also get hwmon interfaces for the voltage
-	  (and on ads7846, temperature) sensors of this chip.
+	  (and on ads7846/tsc2046, temperature) sensors of this chip.
 
 	  If unsure, say N (but it's safe to say "Y").
 
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 693e3b2..b0110fe 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -39,6 +39,7 @@
 /*
  * This code has been heavily tested on a Nokia 770, and lightly
  * tested on other ads7846 devices (OSK/Mistral, Lubbock).
+ * TSC2046 is just newer ads7846 silicon.
  * Support for ads7843 tested on Atmel at91sam926x-EK.
  * Support for ads7845 has only been stubbed in.
  *

软件上面貌似是同一个物种:

http://visa.lab.asu.edu/gitlab/fstrace/android-kernel-msm-hammerhead-3.4-marshmallow-mr3/commit/bff0de5f59ff935138eb41c397a7e50468028b83.diff

#29 Re: 全志 SOC » A33板子修改U-BOOT调试串口失败,大佬们帮忙分析一下 » 2020-12-07 10:18:43

weiyongwill 说:

多谢大佬指点,哪里可以设置关闭LCD,是在uboot设置里面,还是需要改代码?

哇酷小二 说:

有没有可能PD10/11 的 UART1复用 被LCD初始化 覆盖了?

如果修改设备树没用的话, make menuconfig 禁用这个 CONFIG_VIDEO_SUNXI

#30 Re: 全志 SOC » buildroot选择安装mysql后启动信息问题 » 2020-11-30 09:26:12

应该启动了吧, 如果没有启动就看下这个错误日志文件  '/var/mysql/buildroot.err'

#32 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 自己动手把车钥匙的2032电池换了 » 2020-11-30 09:10:31

刚刚翻了一下原图, 也不是很清晰, 下次换备用钥匙电池我拍个无码高清的。

有可能真的是二维码。

#34 Re: 全志 SOC » A33主线Linux跑起OpenGL/ES » 2020-11-02 17:22:43

../src/mesa/tnl/t_vb_lighttmp.h:508:16: warning: 'base[0][3]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   Fcolor[j][3] = base[0][3];
                ^
In file included from ../src/mesa/tnl/t_vb_light.c:29:0:
../src/mesa/main/macros.h:264:13: warning: 'base[0][2]' may be used uninitialized in this function [-Wmaybe-uninitialized]
    (DST)[2] = (SRC)[2];             \
             ^
In file included from ../src/mesa/tnl/t_vb_light.c:303:0:
../src/mesa/tnl/t_vb_lighttmp.h:429:12: note: 'base[0][2]' was declared here
    GLfloat base[2][4];
            ^
In file included from ../src/mesa/tnl/t_vb_light.c:29:0:
../src/mesa/main/macros.h:263:13: warning: 'base[0][1]' may be used uninitialized in this function [-Wmaybe-uninitialized]
    (DST)[1] = (SRC)[1];             \
             ^
In file included from ../src/mesa/tnl/t_vb_light.c:303:0:
../src/mesa/tnl/t_vb_lighttmp.h:429:12: note: 'base[0][1]' was declared here
    GLfloat base[2][4];
            ^
In file included from ../src/mesa/tnl/t_vb_light.c:29:0:
../src/mesa/main/macros.h:262:13: warning: 'base[0][0]' may be used uninitialized in this function [-Wmaybe-uninitialized]
    (DST)[0] = (SRC)[0];             \
             ^
In file included from ../src/mesa/tnl/t_vb_light.c:303:0:
../src/mesa/tnl/t_vb_lighttmp.h:429:12: note: 'base[0][0]' was declared here
    GLfloat base[2][4];
            ^
[598/690] Compiling C object 'src/mesa/bbe4a73@@mesa_classic@sta/drivers_common_meta.c.o'.
In file included from ../src/mesa/drivers/common/meta.c:91:0:
../src/compiler/nir/nir.h:2463:1: warning: '__returns_nonnull__' attribute directive ignored [-Wattributes]
 {
 ^
../src/compiler/nir/nir.h:2469:1: warning: '__returns_nonnull__' attribute directive ignored [-Wattributes]
 {
 ^
[670/690] Linking target src/mesa/drivers/dri/libmesa_dri_drivers.so.
FAILED: src/mesa/drivers/dri/libmesa_dri_drivers.so
/opt/buildroot-2020.02.3/output/host/bin/arm-none-linux-gnueabi-g++  -o src/mesa/drivers/dri/libmesa_dri_drivers.so  -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,libmesa_dri_drivers.so -Wl,--whole-archive src/mesa/drivers/dri/swrast/libswrast_dri.a src/mesa/drivers/dri/radeon/libr100.a src/mesa/drivers/dri/nouveau/libnouveau_vieux.a -Wl,--no-whole-archive src/mesa/drivers/dri/common/libmegadriver_stub.a src/mesa/drivers/dri/common/libdricommon.a src/mapi/shared-glapi/libglapi.so.0.0.0 src/mesa/libmesa_classic.a src/compiler/glsl/libglsl.a src/compiler/glsl/glcpp/libglcpp.a src/util/libmesa_util.a src/compiler/nir/libnir.a src/compiler/libcompiler.a src/util/libxmlconfig.a -Wl,--build-id=sha1 -Wl,-Bsymbolic -Wl,--gc-sections /opt/buildroot-2020.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libdrm.so -lm -pthread -ldl /opt/buildroot-2020.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libexpat.so /opt/buildroot-2020.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libz.so /opt/buildroot-2020.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libdrm_radeon.so /opt/buildroot-2020.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libdrm_nouveau.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/common:$ORIGIN/../../../mapi/shared-glapi:$ORIGIN/../..:$ORIGIN/../../../compiler/glsl:$ORIGIN/../../../compiler/glsl/glcpp:$ORIGIN/../../../util:$ORIGIN/../../../compiler/nir:$ORIGIN/../../../compiler' -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/mesa/drivers/dri/common -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/mapi/shared-glapi -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/mesa -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/compiler/glsl -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/compiler/glsl/glcpp -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/util -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/compiler/nir -Wl,-rpath-link,/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/build/src/compiler
src/mesa/drivers/dri/common/libmegadriver_stub.a(megadriver_stub.c.o): In function `megadriver_stub_init':
megadriver_stub.c:(.text.startup+0x20): undefined reference to `dladdr'
megadriver_stub.c:(.text.startup+0xb8): undefined reference to `dlsym'
collect2: error: ld returned 1 exit status
[674/690] Compiling C object 'src/egl/cb1d4f8@@EGL@sha/main_eglapi.c.o'.
ninja: build stopped: subcommand failed.
package/pkg-generic.mk:266: recipe for target '/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/.stamp_built' failed
make[1]: *** [/opt/buildroot-2020.02.3/output/build/mesa3d-19.3.4/.stamp_built] Error 1
Makefile:84: recipe for target '_all' failed
make: *** [_all] Error 2
$
$

弄了一下午,终于解决这个编译错误了

https://git.busybox.net/buildroot/commit/?id=d3f576d2f37a05275c0d25f855dc24935ff5de5c

修改: ./output/build/mesa3d-19.3.4/src/mesa/drivers/dri/meson.build

libmegadriver_stub, libdricommon, libglapi,

改为:
libdricommon, libmegadriver_stub, libglapi,

即交换编译顺序.

#36 VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试 Ubuntu 下编译第一个 Hello World 驱动并运行 » 2020-09-07 08:43:58

ubuntu
回复: 0

试一试 Ubuntu 下编译第一个 Hello World 驱动并运行


https://www.geeksforgeeks.org/linux-kernel-module-programming-hello-world-program/


hello.c:

/**
 * @file    hello.c
 * @author  Akshat Sinha
 * @date    10 Sept 2016
 * @version 0.1
 * @brief  An introductory "Hello World!" loadable kernel
 *  module (LKM) that can display a message in the /var/log/kern.log
 *  file when the module is loaded and removed. The module can accept
 *  an argument when it is loaded -- the name, which appears in the
 *  kernel log files.
*/
#include <linux/module.h>     /* Needed by all modules */
#include <linux/kernel.h>     /* Needed for KERN_INFO */
#include <linux/init.h>       /* Needed for the macros */

///< The license type -- this affects runtime behavior
MODULE_LICENSE("GPL");

///< The author -- visible when you use modinfo
MODULE_AUTHOR("Akshat Sinha");

///< The description -- see modinfo
MODULE_DESCRIPTION("A simple Hello world LKM!");

///< The version of the module
MODULE_VERSION("0.1");

static int __init hello_start(void)
{
    printk(KERN_INFO "Loading hello module...\n");
    printk(KERN_INFO "Hello world\n");
    return 0;
}

static void __exit hello_end(void)
{
    printk(KERN_INFO "Goodbye Mr.\n");
}

Makefile:

obj-m = hello.o
all:
        make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

编译,安装驱动,查看log:

ubuntu@ubuntu:/opt/test3$ make
make -C /lib/modules/5.4.0-42-generic/build/ M=/opt/test3 modules
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-42-generic'
  CC [M]  /opt/test3/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC [M]  /opt/test3/hello.mod.o
  LD [M]  /opt/test3/hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-42-generic'
ubuntu@ubuntu:/opt/test3$
ubuntu@ubuntu:/opt/test3$ sudo insmod hello.ko
ubuntu@ubuntu:/opt/test3$
ubuntu@ubuntu:/opt/test3$ dmesg |tail -n 1
[256200.240481] Hello world
ubuntu@ubuntu:/opt/test3$

#40 Re: 君正Ingenic/X1000/X2000/T10/T20/T30 » 用君正X1000一个UART控制十个N76E003单片机, 用RS485那种硬件协议,给每个单片机编一个地址, 问题不大吧? » 2020-05-02 08:37:09

yobbo 说:

第一,不能直接用ttl电平,不然这么多很容易出问题。
第二,modbus通讯比较慢,即使提高波特率也会存在3.5char的问题。

请教应该使用什么电平呢,用什么电平转换芯片?
3.5char是什么问题呢?

#42 Re: 全志 SOC » Tiny200 SPINAND固件分享 » 2020-04-27 10:43:53

牛叉, 请问有没有配置文件可以分享一下呢?

#43 Re: 全志 SOC » 拆拆 二维码/条码 读头 » 2020-04-10 14:41:59

中华神U, 是我讲过性价比最高的CPU了,没有之一。

#44 Re: 全志 SOC » 新手入门,串口求助 » 2020-04-10 14:04:36

xblzy0423 说:

板子:ZERO V3S  Linux系统
目标,linux入门,先从串口接发送开始,UBOOT等按教程已做好了,在ZERO V3S 已正常跑起来了

https://whycan.cn/t_3313.html
https://whycan.cn/t_2537.html#p19936
https://whycan.cn/t_2428.html#p19336
https://whycan.cn/t_2809.html#p22915

#45 Re: 全志 SOC » 新手求助 rootfs.tar生成 » 2020-04-10 13:57:11

估计解压姿势错误,要在Linux(Ubuntu)用tar 解压, 这样才能保证软链接和执行属性没问题.

把卡插入系统看下文件出了什么问题。

#46 Re: 全志 SOC » 请问有没有哪位朋友用过 A33 Linux5.x IO中断呢? » 2020-04-08 23:53:41

# insmod /mnt/udisk/hello.ko
[   31.697182] hello: loading out-of-tree module taints kernel.
[   31.703544] <1>Hello World
[   31.706404] Mapped int 57
#
#
# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 18:          0          0          0          0     GICv2  29 Level     arch_timer
 19:        370        294        146        209     GICv2  30 Level     arch_timer
 22:          0          0          0          0     GICv2  50 Level     timer@1c20c00
 23:          0          0          0          0     GICv2  82 Level     1c02000.dma-controller
 24:       1175          0          0          0     GICv2  92 Level     sunxi-mmc
 26:          0          0          0          0     GICv2 103 Level     musb-hdrc.1.auto
 27:          0          0          0          0     GICv2 104 Level     ehci_hcd:usb1
 28:          0          0          0          0     GICv2 105 Level     ohci_hcd:usb2
 34:        166          0          0          0     GICv2  32 Level     ttyS0
 42:          0          0          0          0     GICv2  72 Level     1f00000.rtc
 57:          0          0          0          0  sunxi_pio_edge   4 Edge      pb4_int
 62:          0          0          0          0  sunxi_pio_edge   9 Edge      1c0f000.mmc cd
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:        710        836         99        271  Rescheduling interrupts
IPI3:          4         23         44         41  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:          0          0          0          0  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts
Err:          0
# [   52.420296] interrupt received (irq: 57)
[   52.424250] gpio pin is low
[   52.427083] interrupt received (irq: 57)
[   52.431010] gpio pin is low
[   52.854042] interrupt received (irq: 57)
[   52.857980] gpio pin is low
[   52.860807] interrupt received (irq: 57)
[   52.864733] gpio pin is low
[   52.886404] interrupt received (irq: 57)
[   52.890338] gpio pin is low
[   52.897023] interrupt received (irq: 57)
[   52.900955] gpio pin is low
[   52.927779] interrupt received (irq: 57)
[   52.931710] gpio pin is low
[   53.154994] interrupt received (irq: 57)
[   53.158927] gpio pin is high
[   53.161838] interrupt received (irq: 57)
[   53.165764] gpio pin is low
[   53.168574] interrupt received (irq: 57)
[   53.172500] gpio pin is low
[   53.577491] interrupt received (irq: 57)
[   53.581424] gpio pin is high
[   53.584343] interrupt received (irq: 57)
[   53.588270] gpio pin is high

#
# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 18:          0          0          0          0     GICv2  29 Level     arch_timer
 19:        512        351        156        209     GICv2  30 Level     arch_timer
 22:          0          0          0          0     GICv2  50 Level     timer@1c20c00
 23:          0          0          0          0     GICv2  82 Level     1c02000.dma-controller
 24:       1579          0          0          0     GICv2  92 Level     sunxi-mmc
 26:          0          0          0          0     GICv2 103 Level     musb-hdrc.1.auto
 27:          0          0          0          0     GICv2 104 Level     ehci_hcd:usb1
 28:          0          0          0          0     GICv2 105 Level     ohci_hcd:usb2
 34:        207          0          0          0     GICv2  32 Level     ttyS0
 42:          0          0          0          0     GICv2  72 Level     1f00000.rtc
 57:         12          0          0          0  sunxi_pio_edge   4 Edge      pb4_int
 62:          0          0          0          0  sunxi_pio_edge   9 Edge      1c0f000.mmc cd
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:        710        897        100        271  Rescheduling interrupts
IPI3:          5         26         44         41  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:          4          0          0          0  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts
Err:          0
#

试了一下 linux4.20 居然可以触发中断, 估计后面被改出问题了吧.

#47 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » AIR724模块, 合宙拼团: 一个4G模块+一个4G开发板 = 19.9元 » 2020-04-07 18:32:01

Gentlepig 说:

请教个问题,ec200、air720这类模组,都是跑的linux吗?

有可能是个RTOS, 当然也很可能是Linux, 因为里面都实现了完整的TCP/IP/RNDIS协议栈.

#48 Re: 全志 SOC » 荔枝派执行qmake后得到Makefile,接着执行make后报错,求老师们指点 » 2020-04-07 13:51:45

zhang235hai 说:

执行之后出现这个
zhang@ubuntu:~$ /home/zhang/buildroot-2018.08.2/output/host/bin/arm-linux-gnueabihf-g++
/home/zhang/buildroot-2018.08.2/output/host/bin/arm-linux-gnueabihf-g++.br_real: No such file or directory
zhang@ubuntu:~$

/home/zhang/buildroot-2018.08.2/output/host/bin/arm-linux-gcc
/home/zhang/buildroot-2018.08.2/output/host/bin/arm-linux-g++

再试一试这两个。

#50 Re: 全志 SOC » 荔枝派执行qmake后得到Makefile,接着执行make后报错,求老师们指点 » 2020-04-07 13:40:13

/home/zhang/buildroot-2018.08.2/output/host/bin/arm-linux-gnueabihf-g++

这个可以执行吗?

#51 Re: 全志 SOC » 请问有没有哪位朋友用过 A33 Linux5.x IO中断呢? » 2020-04-07 11:41:33

拉轰的脚踏车 说:

用 devmem 去读 PB_CFG0 寄存器




看是否处于中断复用?


查了一下, PB_CFG0  地址应该是 0x01C20824

insmod hello.ko 之前:
devmem 0x01C20824: 0x77477733

insmod hello.ko 之后:
devmem 0x01C20824: 0x77447733

看来这个PB4的复用应该没有错误, 只能检查别的问题了。




看来还是去 Icenowy 的仓库围观一下:
https://github.com/Icenowy/linux/commits/a33-cedrus-pr

https://github.com/Icenowy/linux/commits/a33-best-practice

#52 Re: 全志 SOC » 请问有没有哪位朋友用过 A33 Linux5.x IO中断呢? » 2020-04-07 10:55:16

https://github.com/torvalds/linux/blob/master/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c

          SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 4)),    /* PB_EINT4 */

改为:

          SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 4)),    /* PB_EINT4 */


也没有什么用, 向各路江湖豪杰求救!

#53 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 学渣请教一个C语言 #, ## 宏语法的问题 » 2020-04-07 10:04:19

shaoxi2010 说:

#把宏参数作为一个字符串,##用于宏参数贴合

原来如此

shaoxi2010 说:

还有展开的结果应该是PINCTRL_PIN(PB_BASE + 4, “PB4”)

看起来应该是这样了, 感谢大佬。

#54 VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 学渣请教一个C语言 #, ## 宏语法的问题 » 2020-04-07 09:04:58

ubuntu
回复: 6

https://github.com/torvalds/linux/blob/master/drivers/pinctrl/sunxi/pinctrl-sunxi.h#L32

#define SUNXI_PINCTRL_PIN(bank, pin)		\
	PINCTRL_PIN(P ## bank ## _BASE + (pin), "P" #bank #pin)

所以这个宏函数:
SUNXI_PINCTRL_PIN(B, 4)


展开应该是:
PINCTRL_PIN(PB_BASE + 4, PB4)



那么问题来了, 请教 一个#, 和两个#有什么区别呢?

#55 Re: 全志 SOC » 请问有没有哪位朋友用过 A33 Linux5.x IO中断呢? » 2020-04-06 19:56:34

PB4 用 sysfs 控制输出高低电平正常:

#PB4 = 32 + 4 = 36
echo 36 > /sys/class/gpio/export

#设置为输出
echo "out" > /sys/class/gpio/gpio36/direction

#PB4输出高电平
echo 1 > /sys/class/gpio/gpio36/value

#PB4输出低电平
echo 0 > /sys/class/gpio/gpio36/value

hello.c

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/input-polldev.h>
#include <linux/input/touchscreen.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>

#define GPIO 36    //PG0
#define GPIO_INT_NAME  "pb4_int"

#define GPIO_HIGH gpio_get_value(GPIO)
#define GPIO_LOW (gpio_get_value(GPIO) == 0)


MODULE_LICENSE("Dual BSD/GPL");

short int irq_any_gpio    = 0;
int count =0;

enum { falling, rising } type;
static irqreturn_t r_irq_handler(int irq, void *dev_id)
 {
    count++;
    printk("interrupt received (irq: %d)\n", irq);
    if (irq == gpio_to_irq(GPIO))
    {

        type = GPIO_LOW ? falling : rising;

        if(type == falling)
        {
            printk("gpio pin is low\n");
        }
        else
            printk("gpio pin is high\n");

    }

    return IRQ_HANDLED;
}

void r_int_config(void) {

   if (gpio_request(GPIO, GPIO_INT_NAME ))
   {
      printk("GPIO request failure: %s\n", GPIO_INT_NAME );
      return;
   }

   if ( (irq_any_gpio = gpio_to_irq(GPIO)) < 0 ) {
      printk("GPIO to IRQ mapping failure %s\n",GPIO_INT_NAME );
      return;
   }

   printk(KERN_NOTICE "Mapped int %d\n", irq_any_gpio);

   if (request_irq(irq_any_gpio,(irq_handler_t ) r_irq_handler, IRQF_TRIGGER_FALLING , GPIO_INT_NAME, NULL))
   {
      printk("Irq Request failure\n");
      return;
   }

   return;
}

static void release_hello(void) {

   free_irq(gpio_to_irq(GPIO), NULL);
    gpio_free(GPIO);;
   return;
}

static int init_hello(void)
{
        printk("<1>Hello World\n");
    r_int_config();
        return 0;
}

module_init(init_hello);    // Do some better naming
module_exit(release_hello);

Makefile

Makefile
#
# Makefile for kernel test
#
PWD         := $(shell pwd)
KVERSION    := $(shell uname -r)
KERNEL_DIR   = /usr/src/linux-headers-$(KVERSION)/

MODULE_NAME  = hello
obj-m       := $(MODULE_NAME).o

all:
        make -C $(KERNEL_DIR) M=$(PWD) modules
clean:
        make -C $(KERNEL_DIR) M=$(PWD) clean

编译指令:

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make  -C /home/ren/A33/mainline/linux/ M=${PWD} modules

安装模块:

insmod hello.ko

然后短路 PB4 & GND, 然而还是纹丝不动.

#58 Re: 全志 SOC » 请问有没有哪位朋友用过 A33 Linux5.x IO中断呢? » 2020-04-06 17:11:01

https://github.com/torvalds/linux/blob/master/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c

https://patchwork.kernel.org/patch/8572141/

diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
index 00265f0..8b381d6 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
@@ -485,6 +485,7 @@  static const struct sunxi_pinctrl_desc sun8i_a33_pinctrl_data = {
 	.pins = sun8i_a33_pins,
 	.npins = ARRAY_SIZE(sun8i_a33_pins),
 	.irq_banks = 2,
+	.irq_bank_base = 1,
 };

2016 的bug patch 也没有并入?

#59 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 发个树莓派 ov5647 摄像头资料 » 2020-04-06 16:56:26

微凉VeiLiang 说:

可以,我买了这个,直接可以用在荔枝派的mipi接口上,还能对焦。 https://item.taobao.com/item.htm?id=566547808242

这个貌似就是荔枝派zero 开发板用的那个封装, 这个数据线是 D0/D1/D2/D3,  上面树莓派只有 D0/D1

#61 Re: 全志 SOC » V3s/S3 Linux 测试 轮询/中断 GPIO 按钮驱动程序 / 旋转编码器 等 » 2020-04-06 16:43:34

https://github.com/torvalds/linux/blob/master/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c

https://patchwork.kernel.org/patch/8572141/

diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
index 00265f0..8b381d6 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
@@ -485,6 +485,7 @@  static const struct sunxi_pinctrl_desc sun8i_a33_pinctrl_data = {
 	.pins = sun8i_a33_pins,
 	.npins = ARRAY_SIZE(sun8i_a33_pins),
 	.irq_banks = 2,
+	.irq_bank_base = 1,
 };

2016 的bug patch 也没有并入?

#62 全志 SOC » 请问有没有哪位朋友用过 A33 Linux5.x IO中断呢? » 2020-04-06 16:36:48

ubuntu
回复: 7

原帖: https://whycan.cn/t_2393.html#p37627

我的A33 linux5.x 按 4# 的操作步奏,中断申请到了, 但是根本不触发。

arch/arm/boot/dts/sun8i-a23-a33.dtsi

                pio: pinctrl@1c20800 {
                        /* compatible gets set in SoC specific dtsi file */
                        reg = <0x01c20800 0x400>;
                        
....

                        key_pins: key_pins@0 {
                                pins = "PB5";
                                function = "gpio_in";
                                allwinner,drive = <0>;
                                allwinner,pull = <1>;
                        };



arch/arm/boot/dts/sun8i-a33.dtsi

        keys{
                compatible = "gpio-keys";
                pinctrl-names = "default";
                pinctrl-0 = <&key_pins>;
                #address-cells = <1>;
                #size-cells = <0>;
                autorepeat;

                g-keys_up {
                        label = "GPIO KEY_UP";
                        linux,code = <103>; /* KEY_UP, see /usr/include/linux/input-event-codes.h */
//                        gpios = <&pio 1 5 1>; /* PA7 GPIO_ACTIVE_LOW */

                        interrupt-parent = <&pio>;
                        interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>;//PB0
                };

                /*status = "okay";*/
        };

        iio-hwmon {
                compatible = "iio-hwmon";
                io-channels = <&ths>;
        };

根本不触发:

# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 18:          0          0          0          0     GICv2  29 Level     arch_timer
 19:        401       1735        205        225     GICv2  30 Level     arch_timer
 22:          0          0          0          0     GICv2  50 Level     timer@1c20c00
 23:          0          0          0          0     GICv2  82 Level     1c02000.dma-controller
 25:       4072          0          0          0     GICv2  92 Level     sunxi-mmc
 26:          0          0          0          0     GICv2 103 Level     musb-hdrc.1.auto
 27:          0          0          0          0     GICv2 104 Level     ehci_hcd:usb1
 28:          0          0          0          0     GICv2 105 Level     ohci_hcd:usb2
 34:       1705          0          0          0     GICv2  32 Level     ttyS0
 56:          0          0          0          0  sunxi_pio_edge   5 Edge      GPIO KEY_UP
 60:          0          0          0          0  sunxi_pio_edge   9 Edge      1c0f000.mmc cd
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:        749        723        125       1223  Rescheduling interrupts
IPI3:          1         12         22         43  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:          0          0          0          0  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts
Err:          0

#63 Re: 全志 SOC » V3s/S3 Linux 测试 轮询/中断 GPIO 按钮驱动程序 / 旋转编码器 等 » 2020-04-06 16:34:58

我的A33 linux5.x 按 4# 的操作步奏,中断申请到了, 但是根本不触发。

arch/arm/boot/dts/sun8i-a23-a33.dtsi

                pio: pinctrl@1c20800 {
                        /* compatible gets set in SoC specific dtsi file */
                        reg = <0x01c20800 0x400>;
                        
....

                        key_pins: key_pins@0 {
                                pins = "PB5";
                                function = "gpio_in";
                                allwinner,drive = <0>;
                                allwinner,pull = <1>;
                        };



arch/arm/boot/dts/sun8i-a33.dtsi

        keys{
                compatible = "gpio-keys";
                pinctrl-names = "default";
                pinctrl-0 = <&key_pins>;
                #address-cells = <1>;
                #size-cells = <0>;
                autorepeat;

                g-keys_up {
                        label = "GPIO KEY_UP";
                        linux,code = <103>; /* KEY_UP, see /usr/include/linux/input-event-codes.h */
//                        gpios = <&pio 1 5 1>; /* PA7 GPIO_ACTIVE_LOW */

                        interrupt-parent = <&pio>;
                        interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>;//PB0
                };

                /*status = "okay";*/
        };

        iio-hwmon {
                compatible = "iio-hwmon";
                io-channels = <&ths>;
        };

根本不触发:

# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 18:          0          0          0          0     GICv2  29 Level     arch_timer
 19:        401       1735        205        225     GICv2  30 Level     arch_timer
 22:          0          0          0          0     GICv2  50 Level     timer@1c20c00
 23:          0          0          0          0     GICv2  82 Level     1c02000.dma-controller
 25:       4072          0          0          0     GICv2  92 Level     sunxi-mmc
 26:          0          0          0          0     GICv2 103 Level     musb-hdrc.1.auto
 27:          0          0          0          0     GICv2 104 Level     ehci_hcd:usb1
 28:          0          0          0          0     GICv2 105 Level     ohci_hcd:usb2
 34:       1705          0          0          0     GICv2  32 Level     ttyS0
 56:          0          0          0          0  sunxi_pio_edge   5 Edge      GPIO KEY_UP
 60:          0          0          0          0  sunxi_pio_edge   9 Edge      1c0f000.mmc cd
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:        749        723        125       1223  Rescheduling interrupts
IPI3:          1         12         22         43  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:          0          0          0          0  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts
Err:          0

#64 Re: 全志 SOC » V3s/S3 Linux 测试 轮询/中断 GPIO 按钮驱动程序 / 旋转编码器 等 » 2020-04-06 10:11:11

牛叉,学习了, 正需要这个demo到A33测试, 晚点过来报告。

#65 VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 嵌入式Linux通讯用 libssl RSA 加密感觉挺不错的 » 2020-04-06 10:09:19

ubuntu
回复: 4

https://blog.csdn.net/RUN32875094/article/details/79306256

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<openssl/rsa.h>
#include<openssl/pem.h>
#include<openssl/err.h>
 
#define PRIKEY "prikey.pem"
#define PUBKEY "pubkey.pem"
#define BUFFSIZE 4096
 
/************************************************************************
 * RSA加密解密函数
 *
 * file: test_rsa_encdec.c
 * gcc -Wall -O2 -o test_rsa_encdec test_rsa_encdec.c -lcrypto -lssl
 *
 * author: tonglulin@gmail.com by www.qmailer.net
 ************************************************************************/
 
char *my_encrypt(char *str, char *pubkey_path)
{
    RSA *rsa = NULL;
    FILE *fp = NULL;
    char *en = NULL;
    int len = 0;
    int rsa_len = 0;
 
    if ((fp = fopen(pubkey_path, "r")) == NULL) {
        return NULL;
    }
 
    /* 读取公钥PEM,PUBKEY格式PEM使用PEM_read_RSA_PUBKEY函数 */
    if ((rsa = PEM_read_RSAPublicKey(fp, NULL, NULL, NULL)) == NULL) {
        return NULL;
    }
 
    RSA_print_fp(stdout, rsa, 0);
 
    len = strlen(str);
    rsa_len = RSA_size(rsa);
 
    en = (char *)malloc(rsa_len + 1);
    memset(en, 0, rsa_len + 1);
 
    if (RSA_public_encrypt(rsa_len, (unsigned char *)str, (unsigned char*)en, rsa, RSA_NO_PADDING) < 0) {
        return NULL;
    }
 
    RSA_free(rsa);
    fclose(fp);
 
    return en;
}
 
char *my_decrypt(char *str, char *prikey_path)
{
    RSA *rsa = NULL;
    FILE *fp = NULL;
    char *de = NULL;
    int rsa_len = 0;
 
    if ((fp = fopen(prikey_path, "r")) == NULL) {
        return NULL;
    }
 
    if ((rsa = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL)) == NULL) {
        return NULL;
    }
 
    RSA_print_fp(stdout, rsa, 0);
 
    rsa_len = RSA_size(rsa);
    de = (char *)malloc(rsa_len + 1);
    memset(de, 0, rsa_len + 1);
 
    if (RSA_private_decrypt(rsa_len, (unsigned char *)str, (unsigned char*)de, rsa, RSA_NO_PADDING) < 0) {
        return NULL;
    }
 
    RSA_free(rsa);
    fclose(fp);
 
    return de;
}
 
int main(int argc, char *argv[])
{
    char *src = "hello, world!";
    char *en = NULL;
    char *de = NULL;
 
    printf("src is: %s\n", src);
 
    en = my_encrypt(src, PUBKEY);
    printf("enc is: %s\n", en);
 
    de= my_decrypt(en, PRIKEY);
    printf("dec is: %s\n", de);
 
    if (en != NULL) {
        free(en);
    }
 
    if (de != NULL) {
        free(de);
    }
 
    return 0;
}

#66 Re: 全志 SOC » v3s matrix keypad 设备树怎么写? » 2020-04-06 09:32:05

请问大佬,问题最后解决了吗?

#68 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 现在用arm9做产品用什么芯片好? » 2020-04-06 09:24:55

liuchangyin 说:

v3s如何?看着最近在涨价啊

估计疫情导致供应链紧张吧,后面应该慢慢缓解,目前好几家芯片都开始炒作涨价了。

#70 Re: 全志 SOC » F1C100S使用主线uboot如何更改默认终端串口 » 2020-04-03 15:22:13

#define CONFIG_CONS_INDEX       1  //UART0
#define CONFIG_CONS_INDEX       2  //UART1
#define CONFIG_CONS_INDEX       3  //UART2

改这个只能影响u-boot 的 spl 串口输出, 如果u-boot输出还得改 dts 文件:

diff --git a/arch/arm/dts/suniv-f1c100s-licheepi-nano.dts b/arch/arm/dts/suniv-f1c100s-licheepi-nano.dts
index 9c111e6228..45658d2b1d 100644
--- a/arch/arm/dts/suniv-f1c100s-licheepi-nano.dts
+++ b/arch/arm/dts/suniv-f1c100s-licheepi-nano.dts
@@ -15,11 +15,12 @@

        aliases {
                serial0 = &uart0;
+               serial2 = &uart2;
                spi0 = &spi0;
        };

        chosen {
-               stdout-path = "serial0:115200n8";
+               stdout-path = "serial2:115200n8";
        };
 };

@@ -47,6 +48,18 @@
        status = "okay";
 };

+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins_a>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins_e>;
+       status = "okay";
+};
+
 &usb_otg {
        dr_mode = "otg";
        status = "okay";
diff --git a/arch/arm/dts/suniv.dtsi b/arch/arm/dts/suniv.dtsi
index 10da83b53a..d3b937a16d 100644
--- a/arch/arm/dts/suniv.dtsi
+++ b/arch/arm/dts/suniv.dtsi
@@ -125,6 +125,16 @@
                                pins = "PE0", "PE1";
                                function = "uart0";
                        };
+
+                       uart1_pins_a: uart-pins-pa {
+                               pins = "PA2", "PA3";
+                               function = "uart1";
+                       };
+
+                       uart2_pins_e: uart-pins-pe-uart2 {
+                               pins = "PE7", "PE8";
+                               function = "uart2";
+                       };
                };

                timer@1c20c00 {
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index b0a946d3b7..09c1a78adc 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -176,6 +176,9 @@ enum sunxi_gpio_number {
 #define SUNXI_GPD_LVDS0                3

 #define SUNIV_GPE_UART0                5
+#define SUNIV_GPA_UART1                5
+#define SUNIV_GPE_UART2                3
+
 #define SUN5I_GPE_SDC2         3
 #define SUN8I_GPE_TWI2         3

diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 6afbb7affa..7a44996505 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -87,6 +87,14 @@ static int gpio_init(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPE(0), SUNIV_GPE_UART0);
        sunxi_gpio_set_cfgpin(SUNXI_GPE(1), SUNIV_GPE_UART0);
        sunxi_gpio_set_pull(SUNXI_GPE(1), SUNXI_GPIO_PULL_UP);
+#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUNIV)
+       sunxi_gpio_set_cfgpin(SUNXI_GPA(2), SUNIV_GPA_UART1);
+       sunxi_gpio_set_cfgpin(SUNXI_GPA(3), SUNIV_GPA_UART1);
+       sunxi_gpio_set_pull(SUNXI_GPA(3), SUNXI_GPIO_PULL_UP);
+#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUNIV)
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(7), SUNIV_GPE_UART2);
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(8), SUNIV_GPE_UART2);
+       sunxi_gpio_set_pull(SUNXI_GPA(8), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_MACH_SUN4I) || \
                                 defined(CONFIG_MACH_SUN7I) || \
                                 defined(CONFIG_MACH_SUN8I_R40))
diff --git a/include/configs/suniv.h b/include/configs/suniv.h
index cadb003f02..b1448f49d4 100644
--- a/include/configs/suniv.h
+++ b/include/configs/suniv.h
@@ -29,4 +29,7 @@

 #define CONFIG_HIDE_LOGO_VERSION

+#undef CONFIG_CONS_INDEX
+#define CONFIG_CONS_INDEX       3
+

2020-04-03_152041.png


从 UART2(PE7/PE8)输出搞定!

#71 Re: 全志 SOC » F1C100S使用主线uboot如何更改默认终端串口 » 2020-04-03 11:41:37

diff --git a/arch/arm/dts/suniv.dtsi b/arch/arm/dts/suniv.dtsi
index 10da83b53a..9dd95f38e1 100644
--- a/arch/arm/dts/suniv.dtsi
+++ b/arch/arm/dts/suniv.dtsi
@@ -125,6 +125,16 @@
                                pins = "PE0", "PE1";
                                function = "uart0";
                        };
+
+                       uart1_pins_a: uart-pins-pa {
+                               pins = "PA2", "PA3";
+                               function = "uart1";
+                       };
+
+                       uart2_pins_a: uart-pins-pe-uart2 {
+                               pins = "PE7", "PE8";
+                               function = "uart2";
+                       };
                };

                timer@1c20c00 {
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index b0a946d3b7..09c1a78adc 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -176,6 +176,9 @@ enum sunxi_gpio_number {
 #define SUNXI_GPD_LVDS0                3

 #define SUNIV_GPE_UART0                5
+#define SUNIV_GPA_UART1                5
+#define SUNIV_GPE_UART2                3
+
 #define SUN5I_GPE_SDC2         3
 #define SUN8I_GPE_TWI2         3

diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 6afbb7affa..7a44996505 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -87,6 +87,14 @@ static int gpio_init(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPE(0), SUNIV_GPE_UART0);
        sunxi_gpio_set_cfgpin(SUNXI_GPE(1), SUNIV_GPE_UART0);
        sunxi_gpio_set_pull(SUNXI_GPE(1), SUNXI_GPIO_PULL_UP);
+#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUNIV)
+       sunxi_gpio_set_cfgpin(SUNXI_GPA(2), SUNIV_GPA_UART1);
+       sunxi_gpio_set_cfgpin(SUNXI_GPA(3), SUNIV_GPA_UART1);
+       sunxi_gpio_set_pull(SUNXI_GPA(3), SUNXI_GPIO_PULL_UP);
+#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUNIV)
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(7), SUNIV_GPE_UART2);
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(8), SUNIV_GPE_UART2);
+       sunxi_gpio_set_pull(SUNXI_GPA(8), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_MACH_SUN4I) || \
                                 defined(CONFIG_MACH_SUN7I) || \
                                 defined(CONFIG_MACH_SUN8I_R40))
diff --git a/include/configs/suniv.h b/include/configs/suniv.h
index cadb003f02..b1448f49d4 100644
--- a/include/configs/suniv.h
+++ b/include/configs/suniv.h
@@ -29,4 +29,7 @@

 #define CONFIG_HIDE_LOGO_VERSION

+#undef CONFIG_CONS_INDEX
+#define CONFIG_CONS_INDEX       3
+
 #endif /* __CONFIG_H */

从 UART2(PE7/PE8)输出,  刚刚改完, 还没测试呢, 可能有坑。

#73 Re: 全志 SOC » 自制F1C200S板子连接电脑USB显示无法识别 » 2020-04-03 11:29:34

MK-2020 说:

谢谢!已经解决。

请问是如何解决的?

#74 Re: 全志 SOC » F1C100S使用主线uboot如何更改默认终端串口 » 2020-04-03 11:27:59

这个文件 include/configs/suniv.h 还得加上:

#define CONFIG_CONS_INDEX       1  //UART0
#define CONFIG_CONS_INDEX       2  //UART1
#define CONFIG_CONS_INDEX       3  //UART2

参考: https://whycan.cn/t_1417.html

#75 Re: 全志 SOC » 【视频分享】制作荔枝派Zero开发板(全志V3s) TF/SD卡启动盘 » 2020-03-31 19:01:49

carl 说:

已经解决了,就是因为分区的原因,之前分区的时候将GPT 搞坏了,重新全部分区之后解决的(diskgenius重新格式化)

原来如此!

#76 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 疫情之下阿里云促销力度挺大的,有没有朋友关注一下? » 2020-03-31 16:38:51

sy373466062 说:

问一下,那续费的时候还是按照现在的优惠来的吗?  还是续费就恢复到原价了?

别怕,有可能一年后价格更便宜,而已云服务器数据迁移很容易。

到时候再建一个新账号,

反正阿里云的新账号又不绑定手机号码, 手机号只用安全验证只用, 一个手机号可以注册多个新账号。

#78 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-31 10:39:04

illusion 说:

好帖,写的非常详细!

随手记录一下过程, 怕过几天又什么都记不起了, 在晕哥这里留点足迹。





克隆u-boot并恢复到 v2017.11 的 tag:

git clone https://github.com/u-boot/u-boot
git reset --hard v2017.11

上面 github 在国内太慢了, 试一试gitee的镜像:

git clone https://gitee.com/mirrors/u-boot
git reset --hard v2017.11

#80 Re: 全志 SOC » buildroot 以太网问题 » 2020-03-31 09:45:52

这个日志 Starting dropbear sshd 应该是

/etc/init.d/XXX 开机初始化脚本里面显示出来的, 找到对应的dropbear 命令行修改一下。

dropbear 命令行我记得有后台运行的参数, 你找一下。

#81 Re: 全志 SOC » buildroot 以太网问题 » 2020-03-31 09:28:05

ps 显示所有进程, 看 dropbear 有没有在跑。

#82 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-31 08:45:34

sea18c 说:

10分钟,这么快呀,我用自己的16线程服务器都要差不多30分钟,是不是我的服务器太差呀,ubuntu你对服务器熟悉吗,帮看下我的服务器是不是要升级了。
16x Intel(R)Xeon(R) CPU E5-2440 v2 @ 1.9GHz(1Socket)   内存是16G

感觉不用这么久, 你是不是编译x86版本了?


dso_2019 说:

ubuntu 选择哪个版本好点

Ubuntu18.04, 这个是 LTS 长支持版本



刚刚收到阿里云的推销短信, 需要下手的要快一点了, 今天最后一天, 明天恢复原价。

#83 Re: 全志 SOC » 【视频分享】制作荔枝派Zero开发板(全志V3s) TF/SD卡启动盘 » 2020-03-31 00:45:47

[    1.405767] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -6



第二个分区有问题, 或者卡坏, 或者文件系统代码没有编译进来.

#86 Re: 全志 SOC » v3s linux3.4 驱动位置 » 2020-03-30 22:25:18

全志 linux 3.4 的 sdk 用 自己搞的设备树 ---- sys_config.fex

#87 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 21:21:32

sea18c 说:

编译linux 要多久呢

具体没记录, 估计全新编译10分钟左右.

#88 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 19:44:03

mobaxterm ssh 登录进去 Up/Down/Tab 无法使用的解决方案:

打开 /etc/passwd

找到

ren:x:1000:1000::/home/ren:/bin/sh

改为:

ren:x:1000:1000::/home/ren:/bin/bash

#89 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 18:29:49

dso_2019 说:

用云服务器编译快一些吗

个人感觉还行, 主要是方便, 家里搞完到办公室继续玩, 手机也可以ssh操控, 不用担心断网连不上的问题.

#90 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 17:40:20

还是没解决, 用 widora 的加速器下载了 linux:

然后接着:
sudo apt-get update;sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
libgl1-mesa-dev libxml2-utils xsltproc unzip u-boot-tools gawk samba gcc-arm-linux-gnueabihf -y

#91 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 16:38:29

装个软件包试一试: sudo apt-get install libcurl4-openssl-dev

ubuntu:/home/ren/A33$ sudo apt-get install libcurl4-openssl-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  libcurl4-doc libidn11-dev libkrb5-dev libldap2-dev librtmp-dev libssh2-1-dev
The following NEW packages will be installed:
  libcurl4-openssl-dev
0 upgraded, 1 newly installed, 0 to remove and 218 not upgraded.
Need to get 294 kB of archives.
After this operation, 1,399 kB of additional disk space will be used.
Get:1 http://mirrors.tencentyun.com/ubuntu bionic-security/main amd64 libcurl4-openssl-dev amd64 7.58.0-2ubuntu3.8 [294 kB]
Fetched 294 kB in 0s (890 kB/s)
Selecting previously unselected package libcurl4-openssl-dev:amd64.
(Reading database ... 168100 files and directories currently installed.)
Preparing to unpack .../libcurl4-openssl-dev_7.58.0-2ubuntu3.8_amd64.deb ...
Unpacking libcurl4-openssl-dev:amd64 (7.58.0-2ubuntu3.8) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Setting up libcurl4-openssl-dev:amd64 (7.58.0-2ubuntu3.8) ...

#92 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 16:29:02

克隆几次都报一个错误:

$sudo git clone https://gitee.com/mirrors/linux
Cloning into 'linux'...
remote: Enumerating objects: 9149, done.
remote: Counting objects: 100% (9149/9149), done.
remote: Compressing objects: 100% (5116/5116), done.
error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

看看这些能不能解决吧
https://zhuanlan.zhihu.com/p/53961303
https://www.cnblogs.com/sddai/p/10209121.html

#93 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 16:06:06

8. mobaxterm 登陆进去, 克隆一个Linux:

mkdir ~/A33/
cd ~/A33
git clone https://gitee.com/mirrors/linux

9. 编译A33, 参考 https://whycan.cn/t_3643.html#p33345

#克隆
git clone https://gitee.com/mirrors/linux

cd linux

#默认配置
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make sunxi_defconfig

#手动配置
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig

#编译
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j3



下面这两个就是你需要的文件了:

arch/arm/boot/zImage
arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dtb

在 mobaxterm 左边的文件树里面可以下载.

#94 Re: 全志 SOC » v3s buildroot QT5 不生成libqjpeg.so » 2020-03-30 15:45:39

Gentlepig 说:

搭车问个问题:
用buildroot制作的带qt5.6的文件系统,运行qt程序后提示:
nuc972:/# ./mnt/nfs/serial                                                                         
Failed to load the library: udev, supported version(s): 1 and 0

运行程序后插上Usb鼠标,没反应。先插上usb鼠标,再运行程序,就有鼠标了。

这个不会 sad

#95 VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 试一试刚刚买的阿里云69元ubuntu服务器 » 2020-03-30 15:44:42

ubuntu
回复: 18

69元阿里云服务器购买参考这里: https://whycan.cn/t_3969.html

1. 添加用户: sudo useradd ren

2. 重设ren密码: sudo passwd ren

3. 建立用户目录:

sudo mkdir /home/ren/ -p
sudo mkdir /home/ren/.ssh -p
sudo chown -R ren:ren /home/ren/

4. 生成秘钥: ssh-keygen -t rsa -b 4096 -C "10000@vip.qq.com"
私钥: id_rsa
公钥: id_rsa.pub

5. 公钥拷贝到目录: sudo cp /home/ren/.ssh/id_rsa.pub /home/ren/.ssh/authorized_keys

6. 用私钥 ssh 连接服务器, 推荐 mobaxterm:
2020-03-30_154146.png

7. 现在新用户可以为所欲为了。

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn