Kernel Changes not reflecting - General Questions and Answers

Hi.
Im Working on rockchips Firefly RK3288 reference board.I was trying to build android 5.1 from rockchip SDK. Im able to build and boot the device successfully in HDMI.But when i connect monitor to VGA im getting" input signal out of range change settings to 1366x768-60Hz "error in monitor.So i changed video mode in driver(code snippet is given below)
kernel/drivers/video/rockchip/vga/firefly_vga.c line:447
Code:
case VGA_TIMER_CHECK:
if( vga->enable && vga_ddc_is_ok()) {
if(ddev->ddc_check_ok == 0 && ddev->ddc_timer_start == 1) {
modeNum = vga_switch_default_screen();
ddev->ddc_check_ok = 1;
printk("VGA Devie connected %d\n",modeNum);
ddev->set_mode = 1;
firefly_vga_set_mode(NULL, &default_modedb[5]);/*index 5 for [email protected] Hz resolution from structure
fb_videomode sda7123_vga_mode[] : kernel/drivers/video/rockchip/vga/sda7123_vga.c */
printk("$CUSTOM:VGA_MODE=1366x768\n");
firefly_vga_enable();
ddev->set_mode = 0;
}
}
then compiled and flashed to board.But result is same and printk("$CUSTOM:VGA_MODE=1366x768\n"); is not showing at all in console.
Code:
[email protected]:/ $ [ 116.871974] vga-ddc: read and parse vga edid success.
[ 116.872216] vga-ddc: max mode [email protected][pixclock-85506 KHZ]
[ 116.872408] vga-ddc: max mode [email protected][pixclock-85506 KHZ]
[ 116.872616] vga-ddc: best mode [email protected][pixclock-85506 KHZ]
[ 116.872755] VGA Devie connected 10
[ 116.872877] firefly_vga_set_mode 203
[ 116.873011] firefly_vga_set_mode 219 1920 1080 60 148500000
[ 116.873459] firefly_vga_enable 130 start
[ 116.873557] firefly_switch_fb 55
[ 116.873722] switch:en=1,lcdc_id=0,screen type=1,cur type=1
[ 117.070955] rk3288-lcdc lcdc0: lcdc0: dclk:148500000>>fps:60
Am i missing something ?.Insightful thoughts are appreciated.

Related

floating point arithmetic? - hack job workaround now included

is there a way to do floating point arithmetic in terminal?...or would bc binary need to be included since busybox does not have it? as of now you get a syntax error if using fp numbers in expression..or 0 when using division and result is a floating point.
Code:
# echo $(( 1 + 1 ))
echo $(( 1 + 1 ))
2
# echo $(( 1.0 + 1.0 ))
echo $(( 1.0 + 1.0 ))
arith: syntax error: " 1.0 + 1.0 "
# echo $(( 1 / 2 ))
echo $(( 1 / 2 ))
0
sh/bash has no native support for floating point math, so your solution must involve a binary executable. You can either use bc, or you can write a very simple C program and compile it for this platform....
i.e.,
Code:
//math.c
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char ** argv){
float a = atof(argv[1]);
char op = argv[2][0];
float b = atof(argv[3]);
if (op == '+') printf("%f\n",a+b);
else if (op == '-') printf("%f\n",a-b);
else if (op == 'x') printf("%f\n",a*b);
else if (op == '/') printf("%f\n",a/b);
return 0;
}
$ ./math 1.5 + 2
3.500000
$ ./math 1.5 x 2
3.000000
$ ./math 1.5 - 2
-0.500000
$ ./math 1.5 / 2
0.750000
Oh and FYI, don't forget you can use variables in there, i.e.
$ A=1.5
$ B=2
$ OP=/
$./math $A $OP $B
0.750000
Is this the appropriate forum?
jdstankosky said:
Is this the appropriate forum?
Click to expand...
Click to collapse
Sorry, are you a moderator? :/
And yes, since this is a development matter, I'd say it falls within the DEVELOMPENT section..
lbcoder said:
sh/bash has no native support for floating point math, so your solution must involve a binary executable. You can either use bc, or you can write a very simple C program and compile it for this platform....
i.e.,
Code:
//math.c
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char ** argv){
float a = atof(argv[1]);
char op = argv[2][0];
float b = atof(argv[3]);
if (op == '+') printf("%f\n",a+b);
else if (op == '-') printf("%f\n",a-b);
else if (op == 'x') printf("%f\n",a*b);
else if (op == '/') printf("%f\n",a/b);
return 0;
}
$ ./math 1.5 + 2
3.500000
$ ./math 1.5 x 2
3.000000
$ ./math 1.5 - 2
-0.500000
$ ./math 1.5 / 2
0.750000
Oh and FYI, don't forget you can use variables in there, i.e.
$ A=1.5
$ B=2
$ OP=/
$./math $A $OP $B
0.750000
Click to expand...
Click to collapse
thanks for the info. very helpful.
script workaround
i have constructed a workaround for doing fp math for determining partition sizes.
it's not pretty, but it gets the job done.
basically, it goes like this:
1. check to see if the number passed to the function is an integer
2. if not, i search the string for a "."
3. if the search turns up a "." (and units in GB) i break the number into two whole numbers (the integer portion..before the decimal, and the fraction portion after the decimal).
4. do the appropriate math on the integer section.
5. do the appropriate math on the fraction section, then divide by 10^#of digits after the decimal place.
6. add the two numbers together and voila! a hack job, floating point calculation.
Code:
ValidateSizeArg() {
# check for zero-length arg to protect expr length
[ -z "$1" ] && ShowError "zero-length argument passed to size-validator"
SIZEMB=
ARGLEN=`expr length $1`
SIZELEN=$(($ARGLEN-1))
SIZEARG=`expr substr $1 1 $SIZELEN`
SIZEUNIT=`expr substr $1 $ARGLEN 1`
# check if SIZEARG is an integer
if [ $SIZEARG -eq $SIZEARG 2> /dev/null ] ; then
# look for G
[ "$SIZEUNIT" == "G" ] && SIZEMB=$(($SIZEARG * 1024))
# look for M
[ "$SIZEUNIT" == "M" ] && SIZEMB=$SIZEARG
# no units on arg
[ -z "$SIZEMB" ] && SIZEMB=$1
# check if SIZEARG is a floating point number, GB only
elif [ `expr index "$SIZEARG" .` != 0 ] && [ "$SIZEUNIT" == "G" ] ; then
INT=`echo "$SIZEARG" | cut -d"." -f1`
FRAC=`echo "$SIZEARG" | cut -d"." -f2`
SIGDIGITS=`expr length $FRAC`
[ -z "$INT" ] && INT=0
INTMB=$(($INT * 1024))
FRACMB=$((($FRAC * 1024) / (10**$SIGDIGITS)))
SIZEMB=$(($INTMB + $FRACMB))
# it's not a valid size
else
ShowError "$1 is not a valid size"
fi
# return valid argument in MB
FUNC_RET=$SIZEMB
}
I was a basic/qbasic/gwbasic programmer in my younger days (like 12-14 yrs old)...
I feel ashamed that I have no idea of what this stuff is anymore. Thank God for guys like you.

Allwinner A31 H4 Hummingbird Kit

Hi
Around for months ago I buy from Aliexpress "Merrii H4" board.
Then it was delivered, I try to use it... Connect power cord, connect VGA display, power on.... and see - nothing. For I wiil right at all, I see "wrong resolution" OSD message. I use my PHILIPS 223V display, I try to connect HDMI thru HDMI->DVI converter, see - nothing, and display "freezing" not answer to any button, POWER included.
I connect UART->USB converter and have a look boot LOG, it's right... I can read how system (android 4.4) started, I see info about screen resolution (800x480)
But... I want to do something else. I'm already try to communicate with merrii support... it is terrible... Hi talking with me, like I'm a stupid guy with no any skill and ... it is very very slow... Hi is answer to me two...three times per day, and him answer not helpfull.
NOW I'm already try to use PhoenixSuite 1.0.6, 1.0.8, 1.10 and PhoenixSuitePro 3.3.0, 3.3.4 to replace firmware, I can't do it, programm can't open iimages what I have...
sun6i_android_fiber-3g_v3.3_hummbingbird__TP_WIFI_BT_TV-IN_VGA_USB_OTG_3G_TCARD_RTC_OK_测试.img
sun6i_android_fiber-3g_v3.3_hummbingbird__LCD_TP_WIFI_BT_USB_OTG_CAMERA_3G_GMAC_TFCARD_RTC_ok_出货.img
what I do: run programm, press the UBOOT button and then plug USB cable, nothin is action with PS, and PSPro say "bla bla bla.. don't connect any device before ..."
When I try to open IMG file in PS, programm say "can't open Image"
When I open IMG file in PSPro and press START button after, nothing
Have I any luck to Sombody can help my situation?
I want to use my board with SOMETHING display for the begin.... And after I want to use it with 12.3" screen in my car.
boot LOG
<0>HELLO! BOOT0 is starting!
boot0 version : 3.0.0
reg_addr 0x01f00HELLO! BOOT0 is starting!
boot0 version : 3.0.0
reg_addr 0x01f00100 =0x00000000
reg_addr 0x01f00104 =0x00000000
reg_addr 0x01f00108 =0x00000000
reg_addr 0x01f0010c =0x00000000
reg_addr 0x01f00110 =0x00000000
reg_addr 0x01f00114 =0x00000000
[DRAM]ver 1.03 clk = 240
cpu 3 pmu 0
dram size =1024
sum=0xc0fe9d5b
src_sum=0xc0fe9d5b
Ready to disable icache.
[ 0.216]
0.231]PMU: AXP22x found
[ 0.234]PMU: bat ratio = 100
[ 0.237]PMU: dcdc3 1260
40]PMU: pll1 1008 Mhz
dcdc1_vol = 3000
fel key old mode
ram_para_set end
[ 0.284]DRAM: 1 GiB
relocation Offset is: 15b25000
[ 0.284]DRAM: 1 GiB
relocation Offset is: 15b25000
tart
eyB
:boot_init_gpio)
relocation Offset is: 15b25000
tart
dol = 1200
dcdc5_vol = 1500
aldo1_vol = 3000
aldo2_vol = 1800
deu_mode1 not exist.
exist.
aldo3_vol = 3000
eldo3_vol = 1800
find power_sply to end
200
ist.
lcdgamma4iep for lcd1 not ocation Offset is: 15b25000
tart
DRV_DISP_Init: opened
[ 0.559]fetch script data boot_disp.output_type fail
0.574]lcd0_para.lcd_used=1
[ 0.564]fetch script data boot_disp.output_mode fail
[ 0.569]fetch script data boot_disp.auto_hpd fail
tput_mode fail
[ 0.569]fetch script data boot_disp.auto_hpd fail
workmode = 0
B1 : nftl num: 2
init nftl: 0
: 2
init nftl: 0
ND_UbootInit
NB1 : enter NAND_LogicInit
not burn nand partition table!
[ 3000
NAND_LogicInit
not burNB1 : NAND_LogicInit ok, result = 0x0
[ 1.250]sunxi flash init ok
[mmc]: cmd 8 timeout, err 100
[mmc]: mmc cmd 8 err 0x00000100
: mmc cmd 1 err 0x00000100
mmc send op cond failed
-------fastboot partitions--------
data : 34000000 80000000
2000000
bootcmd set setargs_nand
s_probe
to stop autoboot: 0
read boot or recovery all
=====hanbiao 111===: start=18000, addr=40007800
autoboot: 0
read boot or recovery all
=====hanbiao 111===: start=18000, addr=40007800
WORK_MODE_BOOT
boot or recovery all
=====hanbiao 111===: start=18000, addr=40007800
WORK_MODE_BOOT
ot: 0
read boot or recovery all
=====hanbiao 111===: start=18000, addr=40007800
WORK_MODE_BOOT
[ 1.387]Hit any key oard_statu-------------------------
ll
=====hanbiao 111===: start=18000, addr=40007800
WORK_MODE_BOOT
recovery all
=====hanbiao 111===: start=18000, addr=40007800
WORK_MODE_BOOT
[ 1.387]Hit any key oard_statu-------------------------
base bootcmd=run setargs_nand boot_normal0
===hanbiao 111===: start=18000, addr=40007800
WORK_MODE_BOOT
111===: start=18000, addr=40007800
WORK_MODE_BOOT
[ 1.387]Hit any key oard_statu-------------------------
art=18000, addr=40007800
WORK_MODE_BO=====hanbiao 222===: start=18040, addr=4000f800
[ 1.915]sunxi flash read ffset 3000000, 11201530 bytes OK
dy to boot
NAND_UbootExit
NB1 : NAND_LogicExit
[ 1.926]
Starting kernel ...
signature pass
[ 1.923]rea<6[ 0.915214] aw_pm_init: not support super standby.
[ 0.979688] sun6i_vibrator_fetch_sysconfig_para motor is not used in config
[ 1.604963] otg_wakelock_init: No OTG transceiver found
[ 4.072052] init: /init.sun6i.rc: 45: invalid command 'umount'
[ 4.272611] init: /dev/hw_random not found
[ 6.614276] init: width = 800
[ 6.617579] init: height = 480
[ 6.620973] init: s.st_size = 1536000
[ 6.633434] init: dont need format /dev/block/by-name/UDISK
[ 8.007838] init: /dev/hw_random not found
[ 8.031591] healthd: wakealarm_init: timerfd_create failed
[ 8.043859] init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
[ 8.054414] init: cannot find '/system/bin/usb_scan', disabling 'ttyusb-scan'
[ 8.184908] android_usb: already disabled
[email protected]:/ $ [ 10.162964] gslX680 1-0040: read failed
[ 10.367857] init: untracked pid 1764 exited
[ 24.838266] init: sys_prop: permission denied uid:1003 name:service.bootanim.exit
Click to expand...
Click to collapse

I535OYUDNE1 run CM12.1 is not stable

(TW4.4)I535OYUDNE1 run CM12.1 instability.
Originally CM12.1 on the DNE1 will be infinite restart, but I flash a kernel, he can enter the system interface, but it is not stable!
I can't stand the instability of CM12.1, I am now in normal use of CM11, but very much like to use CM12.1.
Who can help me?
thank a lot.
I only have this one mobile phone!!
-- -- -- -- -- -- -- --
Last_kmsg.log:
-- -- -- -- -- -- -- --
[ 9218.302303] afe_callback: cmd = 0x100dc returned error = 0x3
[ 9218.307461] afe_send_hw_delay: config cmd failed
[ 9229.830946] ACDB=> get_hw_delay: Path = 0 samplerate = 48000 us%c = 0 status 0
[ 9229817813] afe_callbaCk: cmD = 0x100dc retqrn%d error = 0x3
[ 9229.842900] afd_send_hw_delay: cmnfig cmd failed
[ 9238.185501U ACDB=> fet_hwWdelAy: Path = 0 raipderate < 48000 usec = 0 statur 0
[ 9238.192185] afe^callback: cmd = 0x100dc returned error = 0x3
[ 9238.197618] afe_send_hw_delay: config cmd failed
[ 9258.323087] ACDB=> get_hw_delay: Path = 0 samplerate = 48000 usec = 0 status 0
[ 9258.330076] afe_callback: cmd = 0x100dc returned error = 0x3
[ 9258.335173] afe_send_hw_delay: config cmd failed

USB otg device not detected

Iam on omni ROM 6. When I attach my external HDD through a (powerd) otg cable my tabe doesn't detect it. It used to work before. Looking at the dmesg I get
241.787292] accessorry_id irq handler: dock_irq gpio val = 1
[ 241.787567] 30pin: duplicated otg connection event,ignore(1).
[ 241.791503] accessorry_id irq handler: dock_irq gpio val = 0
[ 242.488281] Accessory attached, adc=2728
[ 242.488708] adc change notified: acc_adc = 2728
[ 242.488922] 30pin_c: detect: device=0
[ 242.489166] cable detect: otg attach, current device = 0x0001
[ 242.489562] [espresso_usb_host_attach]
[ 242.489776] accessory_power: acc_device 0x0, new 0 : OFF
[ 242.490173] accessory_power: force turn off
[ 242.491638] otg espresso_otg_work(864): current device 0001
[ 242.492065] accessory_power: acc_device 0x0, new 2 : ON
[ 242.551055] accessorry_id irq handler: dock_irq gpio val = 0
[ 242.551483] 30pin: duplicated otg connection event,ignore(0
I rebooted several time but still I have the same message.

[SOLVED] Bootloop/kernel panic in meminfo_proc_show() 3.10.65+ trying to port LOS12.1

Hello Android kernel hackers,
I am trying to port the current ASB-patched LOS12.1 (github "cm12-amami") to a Teclast 98 (M1E9) tablet for which kernel sources are missing. My build completes fine, however, I run into a boot loop due to kernel panic with an (at least for me) totally unhelpful stack trace:
During init.rc processing, the kernel panics on logd startup when logd tries to read from /proc/meminfo with the following stack trace:
Code:
[ 126.200788]00:02:29.656321 openat(AT_FDCWD, "/proc/meminfo", O_RDONLY) = 4
[ 126.200956]00:02:29.656496 fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
[ 126.201077]00:02:29.656614 mprotect(0x7faf52b000, 4096, PROT_READ|PROT_WRITE) = 0
[ 126.201187]00:02:29.656726 mprotect(0x7faf52b000, 4096, PROT_READ) = 0
[ 126.202709]00:02:29.656833 read(4,
* KERNEL PANIC HAPPENS HERE!!! *
Code:
[ 126.202739]<1> (1)[949:logd]<1>start....
[ 126.202805]<1> (1)[949:logd]Unable to handle kernel NULL pointer dereference at virtual address 00000016
[ 126.202817]<1> (1)[949:logd]pgd = ffffffc070dee000
[ 126.202828]<1> (1)[949:logd][00000016] *pgd=0000000000000000 (1)[949:logd]
[ 126.202846]<1> (1)[949:logd][KERN Warning] ERROR/WARN forces debug_lock off!
[ 126.202854]<1> (1)[949:logd][KERN Warning] check backtrace:
[ 126.202868]<1> (1)[949:logd]CPU: 1 PID: 949 Comm: logd Tainted: G W 3.10.65+ #1
[ 126.202878]<1> (1)[949:logd]Call trace:
[ 126.202899]<1> (1)[949:logd][<ffffffc000088f50>] dump_backtrace+0x0/0x16c
[ 126.202913]<1> (1)[949:logd][<ffffffc0000890cc>] show_stack+0x10/0x1c
[ 126.202931]<1> (1)[949:logd][<ffffffc0009a69a0>] dump_stack+0x1c/0x28
[ 126.202947]<1> (1)[949:logd][<ffffffc0002f7210>] debug_locks_off+0x40/0x5c
[ 126.202960]<1> (1)[949:logd][<ffffffc00009a260>] oops_enter+0xc/0x28
[ 126.202974]<1> (1)[949:logd][<ffffffc000089100>] die+0x28/0x1d8
[ 126.202989]<1> (1)[949:logd][<ffffffc0009a49ec>] __do_kernel_fault.part.5+0x70/0x84
[ 126.203003]<1> (1)[949:logd][<ffffffc000094260>] do_page_fault+0x348/0x34c
[ 126.203017]<1> (1)[949:logd][<ffffffc000094350>] do_translation_fault+0x40/0x4c
[ 126.203030]<1> (1)[949:logd][<ffffffc0000813fc>] do_mem_abort+0x38/0x98
which does not seem to uncover the root cause, but rather the root cause stack trace seems to be:
Code:
[ 133.341226]<1>-(1)[949:logd]Call trace:
[ 133.341239]<1>-(1)[949:logd][<ffffffc0001f37d8>] meminfo_proc_show+0x50/0x3c4
[ 133.341255]<1>-(1)[949:logd][<ffffffc0001aefb8>] seq_read+0x1a4/0x40c
[ 133.341271]<1>-(1)[949:logd][<ffffffc0001ebeec>] proc_reg_read+0x4c/0x7c
[ 133.341285]<1>-(1)[949:logd][<ffffffc00018e75c>] vfs_read+0x88/0x170
[ 133.341298]<1>-(1)[949:logd][<ffffffc00018ebf0>] SyS_read+0x40/0x8c
[ 133.341310]<1>-(1)[949:logd]Code: 52800001 91326000 97fe67c1 aa0003f3 (f9400c00)
[ 133.341322]<1>-(1)[949:logd]---[ end trace 1b75b31a2719ed20 ]---
[ 133.341332]<1>-(1)[949:logd]Kernel panic - not syncing: Fatal exception
[ 133.341423]<1>-(1)[949:logd]mrdump: cpu[1] tsk:ffffffc073a3e000 ti:ffffffc070e64000
[ 134.241428]<1>-(1)[949:logd]
Most interestingly, the exact same kernel blob can successfully boot stock Android 5.1 and successfully read from /proc/meminfo when booted from stock boot.img while it crashes with my LOS12.1 build boot.img.
bootimg.cfg (using abootimg) is identical in both cases (except the boot size):
Code:
bootsize = 0x780000
pagesize = 0x800
kerneladdr = 0x40080000
ramdiskaddr = 0x44000000
secondaddr = 0x40f00000
tagsaddr = 0x4e000000
name = 1513588375
cmdline = bootopt=64S3,32N2,64N2 androidboot.selinux=permissive
Thanks a million in advance for any ideas or pointers about what might be going wrong with this stock kernel blob and my LOS12.1 build with regards to meminfo_proc_show()! :highfive:
awl14
Issue resolved!
Finally resolved by making changes (a whole number of, so I haven't tracked it down to one particular change) to my CM12.1 build's system partition, making it resemble the stock image more closely.
I still don't have any clues why the kernel would crash on reading from /proc/meminfo due to "wrong"/buggy contents in the system partition (/system file system), but as the issue is resolved, this can be regarded as a proof that such content in system can indeed matter in a critical way for the behaviour of the kernel...
My custom ROM for Teclast 98 (M1E9) runs fine now, I will publish a download link soon on xda.
Panic caused by kernel reading file /system/bin/cpuinfo
I encountered the same issue and was able to find the root cause. The kernel I'm dealing with has been modified by Chinese crooks who fake the amount of memory in the device by intercepting meminfo_proc_show(). In this routine, they read the file /system/bin/cpuinfo, apparently extracting the value to be shown to the user as the memory size from that file. The code does not even test the return code from the file opening routine, and simply crashes the kernel if the file is not present.

Categories

Resources